Makefile的常用技术总结
一、MAKE中的自动变量:
$@: 表示target的名字
$%: 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是 "foo.a"。
$<: 表示第一个依赖条件的名字
$?: 表示所有比target更新的依赖条件的名字列表
$^: 表示所有依赖条件的名字,同时去除依赖列表中重复的条件
$+: 同$^的功能基本相同,但是他并不去除依赖列表中的重复条件
自动变量的另外一类扩展为,其中D为directory,F为File
$(@D): 如果$@为/sbin/ifconfig 那么$(@D)为sbin
$(@F): 如果$@为/sbin/ifconfig 那么$(@F)为ifconfig
其他自动变量均依此类推.
二、虚拟路径:
VPATH=variables (这里VPATH是内部变量)
vpath pattern directory-list (这里vpath是内部指令)
表示make搜寻target和prerequisite的目录,但是命令部分不会利用虚拟目录,他可以包含一组以空格分开的目录列表。
VPATH=include src
vpath %.c src1 src2 (目录可以有多个,模式只能有一个)
vpath %.h include
三、后缀规则:
.SUFFIXES: .out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l 以上是后缀规则中的缺省内置规则。
.SUFFIXES: .pdf .fo .html .xml,表示自定义的后缀规则。
.SUFFIXES: 如果没有定义任何必要条件,则表示打算删除所有的缺省后缀规则。
.o.cpp:
g++ -I ./include -c $< -o $@
等效于
%.o: %.cpp
g++ -I ./include -c $< -o $@
四、常用命令行选项:
make -n = --just-print 只是显示命令,但并不真正执行他们,方便用于调试
make -f = --file 可以灵性制定makefile的名字
make -C = --directory 指出makefile的执行目录
make -s = --silent 所有的命令都不显示
make -i = --ignore-errors 忽略命令中失败的命令,仍然继续执行
make -B = --always-make 认为所有的目标都需要更新(重编译)。
make -e = --environment-overrides 指明环境变量的值覆盖makefile中定义的变量的值。
make -h = --help
make -I = --include-dir 指定一个被包含makefile的搜索目标。可以使用多个“-I”参数来指定多个目录
make -r = --no-builtin-rule 禁止make使用任何隐含规则
make -v = --version
make -w = --print-directory 输出运行makefile之前和之后的信息。这个参数对于跟踪嵌套式调用make时很有用。
make -o = --old-file 不重新生成的指定的<file>,即使这个目标的依赖文件新于它。
Makefile的常用技术总结的更多相关文章
- Android无线开发的几种常用技术(阿里巴巴资深工程师原创分享)
完整的开发一个android移动App需要经过从分解需求.架构设计到开发调试.测试.上线发布等多个阶段,在发布后还会有产品功能上的迭代演进,此外还会面对性能.安全.无线网络质量等多方面的问题. 移动A ...
- React.js 常用技术要点
最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...
- OC中另外的一个常用技术:通知(Notification)
OC中另外的一个常用技术:通知(Nofitication)其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制 ...
- Struts 2 常用技术
目录 Struts 2 常用技术 1. 常用类和接口 1.1 getter 和 setter 方法 1.2 Action 接口 1.3 ActionSupport 类 1.4 通过 Act ...
- 必知干货:Web前端应用十种常用技术你全都知道吗?
Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...
- 可伸缩性架构常用技术——之数据切分 Data Sharding/Partition
1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考. 我们知道,为了应对不 ...
- 介绍web开发中实现会话跟踪的常用技术方法
由于http是无状态的协议,这种特性严重阻碍了客户端与服务器进行动态交互,例如购物车程序,客户在购物车中添加了商品,服务器如何知道购物车已有的物品呢?为了支持客户端与服务器之间的交互,为了弥补http ...
- 分布式锁1 Java常用技术方案
前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...
- makefile文件的技术
[快速的学习笔记] gcc命令:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845 makef ...
随机推荐
- PC和手机怎么实现绝对居中?
示例1(懒人之家): http://www.51xuediannao.com/js/nav/360buy_nav.html 示例2(google官方):
- 工作总结 mvc外键 public virtual SysUser TransferUser { get; set; } 必须要加 virtual 否则 TransferUser 值为null 还要加[ForeignKey("TransferUser")] Bind 和 ScaffoldColumn(转)
[Table("T_SYS_TRANSFERUSER")] public class SysTransferUser : DbSetBase { [ForeignKey(" ...
- Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块
一直想写一份技术文档,但因为自感能力有限而无从下笔,近期做了个关于Android平台下实现与C语言的通讯来操作蓝牙模块的项目,中间碰到了很多问题,也在网上查了很多资料,在完毕主要功能后.也有一些人在网 ...
- kubernetes之创建基于名称空间的内存和cpu限额示例
系列目录 首先我们创建一个名称空间 kubectl create namespace quota-mem-cpu-example 创建资源配额 apiVersion: v1 kind: Resourc ...
- 基于LRU Cache的简单缓存
package com.test.testCache; import java.util.Map; import org.json.JSONArray; import org.json.JSONExc ...
- 04 json,xml混合封装通信
<?php class Response_json_xml{ public static function show($code,$message="",$data=arra ...
- linux下修改主机名hostname方法(转载)
查看主机名: 在终端输入hostname 永久修改 第一步:#hostname oratest 第二步:修改/etc/sysconfig/network中的hostname 第三步:修改/etc/ho ...
- 图像处理之opencv---加减乘除运算cvdiv
http://chyyeng.blog.163.com/blog/static/16918230201211632135456/
- etymology-I
1)inter-.intra-.intro- 三个前缀inter-,intra-和intro-还是有差别的. inter-表between,如international那是between differ ...
- 2-3-4树的java实现
一.什么是2-3-4树 2-3-4树和红黑树一样,也是平衡树.只不过不是二叉树,它的子节点数目可以达到4个. 每个节点存储的数据项可以达到3个.名字中的2,3,4是指节点可能包含的子节点数目.具体而言 ...