make的参数和运行规则
1.退出码
make执行后会返回一个退出值:
0 :表示执行成功
1 : 运行时出错
2:如果使用了make的-q参数,并且make是的一些目标不需要更新,就返回2
2.指定makefile
GNU make会自动在当前目录下依次查找 GNUmakefile 、makefile 和 Makefile这三个文件,GNUmakefile是GNU特有的,其他版本的make不一定会查找这个文件,剩下两个则是大多数make都会去查找的文件名。推荐使用Makefile这个名称,因为大写的字典序比较靠前。这也是业界通常的做法,使用Makefile这个文件名来编写make的规则。
我们也可以使用参数来指定要执行的makefile
make -f filename |
3.指定目标
make默认生成makefile里的第一个目标,我们也可以指定要生成的目标/伪目标。
make clean |
4.检查规则
有些时候我们只是想查看要更新的文件有什么,而不需要生成。
-n: 不执行参数,这些参数只是打印命令,不管目标是否更新,把规则和连带规则下的命令打印出来, 但不执行,这些参数对于我们调试 makefile 很有用处。
5.include
使用include
指令可以读入其他makefile文件的内容,效果就如同在include的位置用对应的文件内容替换一样。
include mkf1 mkf2 # 可以引入多个文件,用空格隔开 |
如果找不到对应文件,则会报错,如果要忽略错误,可以在include
前加-
-include mkf1 mkf2 |
应用实例:自动生成依赖
gcc -MM demo.c 这条命令会输出demo.c所依赖的文件
objs = a.o b.o c.o e.o d.o demo.o |
6.嵌套makefile
如果将一个大项目分为许多小项目,则可以使用嵌套(递归)使用make。具体做法为,写一个总的Makefile,然后在每个子项目中都写一个Makefile,在总Makefile中进行调用。
$(MAKE) -C subdir |
这一指令会自动进入subdir文件夹然后执行make。
可以通过export
指令向子项目的make传递变量。
export var # 传递var |
7.
更过参数的使用详见官方文档