1.Makefile如何获得命令行参数呢?
例如: 运行make VAR=1,即通过命令行给Makefile中的变量$(VAR)赋值为1.
2.touch的作用
touch是unix命令,用来更新文件或目录的修改时间为当前时间。
最常用用法:touch fileA
如果fileA存在,使用touch指令可更改这个文件或目录的日期时间,包括存取时间和更改时间;
如果fileA不存在,touch指令会在当前目录下新建一个空白文件fileA。
3.makefile特殊变量
命令行以'@'打头的含义: 在执行到的时候不回显相应的命令内容,只显示命令的输出。
命令行以'-'打头的含义: 在执行到的时候如果发生错误(退出返回非零状态)时,不中断make过程。
命令行以'+'打头的含义: makefile中以+开头的命令的执行不受到 make的-n,-t,-q三个参数的影响。我们知道,在make的时候,如果加上-n, -t, -q这样的参数,都是不执行相应命令的,而以'+'开头的命令,则无论make命令后面是否跟着三个参数,都会被执行。
$@ : 代表规则的目标;
$^ : 代表所有通过目录搜索得到的依赖文件的完整路径名列表;
$? : 代表依赖文件列表中所有比目标新的文件;
$< : 代表所有通过目录搜索得到的依赖文件的完整路径名列表中的第一个文件;
$% :当规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则的目标是“foo.a(bar.o)”,那么,“ $%”的值就为“bar.o”,“ $@ ”的值为“foo.a”。如果目标不是静态库文件,其值为空。