makefile(一):make简介
makefile(二) :make如何工作、变量使用、make自动推导
makefile(三):makefile5大组成、引用其他文件、环境变量、工作方式。
makefile(四):make规则书写、文件搜寻、伪目标
makefile(五):多目标、静态模式、自动生成依赖性
makefile(六):书写命令、嵌套make、定义命令包
makefile(七):变量、override指示符
makefile(八):多行、环境、目标模式变量、使用条件判断
makefile(九):函数、字符串处理函数、文件名操作函数
makefile(十):foreach函数、if函数、call函数、orignal函数、shell函数、控制make函数
makefile(十一):make的运行。(退出码、指定makefile文件)、检查规则、make参数
makefile(十二):隐含规则
makefile(十三):模式规则、自动化变量、老式后缀规则
makefile(十四):函数库
另外,CMake入门实战:http://www.hahack.com/codes/cmake/
makefile的一些常用易忘点(针对自己吧)
1、make -M/-MM(-M会把标准库所依赖的头文件也包含进来) : 可以把目标所依赖的文件列出来。
eg
gcc -MM main.c的输出则是:(显示其依赖系)
main.o: main.c defs.h
2、make -n/ --just-print (显示执行的命令,但是不执行)
3、 如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。比如你的第一条命令是cd命令,你希望第二条命令得在cd之后的基础上运行,那么你就不能把这两条命令写在两行上,而应该把这两条命令写在一行上,用分号分隔。如:(记住命令要tab开头)
示例一:
exec:
cd /home/hchen
pwd
示例二:
exec:
cd /home/hchen; pwd
4、如果要指定特定的Makefile,你可以使用make的“-f”和“--file”参数,如:make-f Make.Linux或make--file Make.AIX。
5、makefile默认执行会在出错的命令停止。可以手动设置忽略。在对应命令行加上-
-mkdir file1.
6、如果你要传递所有的变量(到下级),那么,只要一个export就行了。后面什么也不用跟,表示传递所有的变量。
7、变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“$”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来。如果你要使用真实的“$”字符,那么你需要用“$$”来表示。
8、高级:变量替换
foo := a.o b.o c.o
bar := $(foo:.o=.c)
这个示例中,我们先定义了一个“$(foo)”变量,而第二行的意思是把“$(foo)”中所有以“.o”字串“结尾”全部替换成“.c”,所以我们的“$(bar)”的值就是“a.c b.c c.c”。
9、编译自动加载默认变量
“隐含规则”会使用一些我们系统变量,我们可以改变这些系统变量的值来定制隐含规则的运行时的参数。如系统变量“CFLAGS”可以控制编译时的编译器参数。