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文件, 并构建 ...
随机推荐
- BZOJ 2824: [AHOI2012]铁盘整理
BZOJ 2824: [AHOI2012]铁盘整理 标签(空格分隔): OI-BZOJ OI-搜索 Time Limit: 10 Sec Memory Limit: 128 MB Descriptio ...
- this指针和类的继承
神秘的家伙 在对象的世界里,有一个特殊的指针,它叫做this.我们从来没有见过他,但是他却从来都存在.我们通过一个典型的例子来认识它: class Human { char fishc; Human( ...
- CentOS中配置php环境
1.安装apache: yum install httpd httpd-devel 2.安装mysql: yum install mysql mysql-server 3.安装php: yum ...
- 基于asp.net MVC 的服务器和客户端的交互(一)
架构思想 三层架构 提出了一种基于ASP.NET开发方式的三层架构的Web应用系统构造思想.其基本内容是:将面向对象的UML建模与Web应用系统开发 相结合,将整个系统分成适合ASP.NET开发方式的 ...
- [转]C++ Template
引言 模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计.C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream. 函数模板 ...
- 【学时总结】◆学时·VII◆ 高维DP
◆学时·VII◆ 高维DP 自学之余,偶遇DP…… ◇ 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是……每一维的大小都不算太大(不然用dp数组存储下来内存会炸),而且枚举时容易超时… ...
- SAP BI 常用TCODE
S.No Tcode Description 1 RSA1 Administrator Work Bench 2 RSA11 Calling up AWB with the IC tree 3 RSA ...
- 内置函数系列之 sorted排序
sorted排序函数语法: sorted(可迭代对象,key=函数(默认为None),reverse=False) 将可 迭代对象的每一个元素传进key后面的函数中,根据函数运算的结果(返回值)进行排 ...
- C# Newtonsoft.Json 解析多嵌套json 进行反序列化
[ { ", "time": "2016-09-09 12:23:33", ", "freeShipping": tru ...
- h5页面苹果端浮动问题
最近在开发一个h5的app端,前端同事写好页面,我们后端java动态化页面,测试的时候发现安卓端什么浏览器都正常如下图1,可是苹果端无论什么浏览器都出现了底部菜单缺少了两个下图2图一:正常显示 图2, ...