Makefile笔记

1
2
3
4
target ... : prerequisites ...
command
...
...

target

可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对 于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites

生成该target所依赖的文件和/或target

command

该target要执行的命令(任意的shell命令)

$<表示所有的依赖 目标集 , $@表示目标集

每条命令的 开头必须以 Tab 键开头,除非,命令是紧跟在依赖规则后面的分号后的。

在Makefile的命令行前加一个减号 - (在Tab键之后) ,标记为不管命令出不出错都认为是成功的

变量的赋值及使用

1
2
3
objects = program.o foo.o utils.o
program : $(objects)
cc -o program $(objects)

条件判断

1
2
3
<conditional-directive>
<text-if-true>
endif

其中 <conditional-directive> 表示条件关键字 ,包括ifeqifneqifdefifndef

函数调用

1
$(<function> <arguments>)