1.targets : PRerequisites command 2.通配符 3.变量,使用$(变量)来引用 4.VPATH make寻找文件的依赖关系时
5.makefile的文件名 包含其他makefile文件
6. clean编译和链接生成了很多文件,如果重新编译就需要提供命令脚本. .PHONY: clean clean: rm *.o temp clean是伪目标.
7.多目标
8.自动化变量 $@ 静态模式,展示了很强大的特性.
9.显示makefile中的命令 make -n
10.命令的执行 如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。
11,命令运行后,make会检测每个命令的返回码,如果成功则继续执行,如果失败则返回. 如果想忽略命令的错误,继续想下执行,有几个版本.比如在命令前加上”-“
12.在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,对于工程的后续维护也很有意义.
还有一个在“嵌套执行”中比较有用的参数,“-w”或是“–print-directory”会在make的过程中输出一些信息,让你看到目前的工作目录。比如,如果我们的下级make目录是“/home/hchen/gnu/make”,如果我们使用“make -w”来执行,那么当进入该目录时,我们会看到: make: Entering directory /home/hchen/gnu/make'. 而在完成下层make后离开目录时,我们会看到: make: Leaving directory
/home/hchen/gnu/make’ 当你使用“-C”参数来指定make下层Makefile时,“-w”会被自动打开的。如果参数中有“-s”(“–slient”)或是“–no-print-directory”,那么,“-w”总是失效的。
13.变量的定义和使用 = 和 :=
14.变量替换技术 foo := a.o b.o c.o bar :=
makefile还有很多高级的技巧,我目前用到的比较少,以后碰到makefile的高级使用技巧再更新到文章中来.
新闻热点
疑难解答