makefile规则整理
makefile规则整理
实际开发中,makefile改的多,写的少。
为了后面不要在编译链接这种地方花费太多的时间,在这里系统性的整理其规则:
基本格式
TARGET : PREREQUISITES
command1
command2
... TARGET:1个目标(.o,lable,可执行文件等等) PREREQUISITES: 一个或者多个,依赖的文件 command:
任意的shell命令;
当依赖的文件中,只要有文件修改日期比TARGET的修改日期新,或者TARGET不存 在,就会触发下面的command执行;
命令需要以TAB键开头,默认的是/bin/sh;
如果下一个命令需要建立在上一个执行,那么需要写到同一行,用分号分隔开;
命令失败,make会退出规则执行,命令前加一个'-'可以忽略出错,继续执行;
makefile的查找顺序 默认情况下,当前目录下依次查找:“GNUmakefile”、“makefile”、“Makefile”
makefile中的“include”可以将其余位置的makefile文件内容展开到当前文件;
makefile的执行顺序 第一个目标是终极目标,终极目标有且仅有一个;
不跟lable的make命令执行,会找到第一个目标开始生成,一层一层往下找依赖关系生成目标,直到第一个TARGET生成后结束;
其中的command命令执行失败,不会影响make的继续运行;
但是依赖文件的生成失败,会导致makefile报错退出;
用.PHONY可以声明一些labe,控制make的执行顺序;
makefile特殊变量 VPATH:寻找依赖文件时,当前路径下没有的情况下,可以自动去这个变量路径找
makefile自动变量 $@
规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。 $<
依赖目标中的第一个目标名字 $?
所有比目标新的依赖目标的集合。以空格分隔 $^
所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,去除重复的依赖目标,只保留一份 $+
所有依赖目标的集合。不去除重复的依赖目标
静态规则
TARGETS:TARGET-PATTERN:PRE-PATTERN
command 这个用法其实就是将“多目标规则”和“目标依赖文件模式通配”相结合。
TARGET-PATTERN通配TARGETS,PRE-PATTERN是对TARGET-PATTERN进行一个二次解析的替换,最终类似与:TARGETS:PRE-PATTERN的效果。
命令参数 make -h :输出help信息(其实有这个就足够了)
make -n :不执行命令,只显示命令,用于调试
make -s :禁止命令显示
make -C :cd到一个目录,然后执行make
make -f :指定make文件
make -B :认为所有的目标都更新,重编译
变量的使用 1. $(var)进行var的使用;
2. $$,表示$字符
3. := ,覆盖之前的值,值决定于它在makefile中的位置,而不是整个makefile展开后的最终值
4. ?= ,如果没有被赋值过就赋予等号后面的值
5. = , make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值
6. +=, 追加变量的值
makefile规则整理的更多相关文章
- Makefile 规则的使用
1.Makefile格式 //最终目标 all: led.o //依赖 arm-linux-ld -Tled.lds -o led.elf led.o //命令 arm-linux-objcopy - ...
- Makefile规则③规则语法、依赖、通配符、目录搜寻、目标
规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ...
- Sonar 常用代码规则整理(二)
摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...
- Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- 单元测试系列之十:Sonar 常用代码规则整理(二)
摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...
- 单元测试系列之九:Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- 编写Makefile规则
一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...
- 【ASM C/C++】 Makefile 规则说明
make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤.Makefile 由一组规则(Rule)组成,每条规则的格式是:target ... : prerequisi ...
- 自动构建Makefile(1)--C/C++编译流程&Makefile规则简介
前言: 大家在Windows上使用VS构建C/C++程序时,不需要自己编辑略显晦涩的Makefile文件,而对于初学者而言, 他们甚至没意识到它的存在.VS是自动生成Makefile文件, 并构建 ...
随机推荐
- 2017.10.12 Java的计数器的开发
//我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...
- app上线
不管第一次还是第二次APP上线都需要三样东西:开发者证书,appID,描述文件
- CNN中卷积的意义
在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量.需要人工设计特征,然后将用这些特征计算的值组成特征向量.在过去几十年的经验来看,人工找的特征并不总是好用.有时多了,有时少了,有 ...
- java重定向与请求转发
重定向是不能直接访问WEB-INF下的资源的,因为重定向是浏览器二次请求,众所周知,客户端是不能直接访问WEB-INF下的资源的. 而请求转发却可以直接访问. 然而重定向却可以间接访问WEN-INF下 ...
- hdu_5288_OO’s Sequence
OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l<=i<=r) ...
- Python——合集
合集 主要功能是对比列表中的信息,进行关系测试. 特点:1. 去重,把一个列表变成合集,就自动去重了.2. 关系测试,测试两组数据之间的交集.差集.并集等关系.3. 没有插入功能,只能添加.4. 一个 ...
- 【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace
之前我自己建立好了一个数据库xscj:表xs是已经定义好的 具体的定义数据类型如下: 为了复制表xs,我们新建一个表名为xstext,使用下列语句进行复制xs,或者说是备份都可以: create ta ...
- OceanBase安装
背景: OceanBase是阿里巴巴.蚂蚁金服自主研发的可扩展的分布式关系数据库,实现了数千亿条记录.数百 TB 数据上的跨行跨表事务,主要支持支付宝核心的交易.支付.会员和账务系统等 OLTP 和 ...
- Linux文件服务器实战(匿名用户)
一.进程与线程 二.vsftp服务器 1.文件传输协议(file transfer protocol,FTP) 基于该协议ftp客户端和服务端实现文件共享,上传下载文件 FTP基于TCP协议生成一个虚 ...
- tomcat日志切割脚本
tomcat日志每俩小时切割的脚本如下(这是用定时任务来完成的,此方法无需重启tomcat): time=$(date +%H) end_time=`` a=$end_time BF_TIME=$(- ...