makefile不同模式的区别
前言 之前在工作中,本想使用自动化变量来构建目标文件,一直编不过去,就去了解了一下makefile的编译规则。 正文 关于自动化变量可以理解为由Makefile文件自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在makefile中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称,否则模式规则将失去意义。 那么模式规则命令中该如何表示文件呢?就需要用到自动化变量,自动化变量的取值根据执行的规则来决定,取决于执行规则的目标文件和依赖文件。下面是对所有的自动化变量进行的说明: 自动化变量 说明 @ 表示规则的目标文件名。如果目标是一个文档文件(Linux 中,一般成 .a 文件为文档文件,也成为静态的库文件),那么它代表这个文档的文件名。在多目标模式规则中,它代表的是触发规则被执行的文件名。 % 当目标文件是一个静态库文件时,代表静态库的一个成员名。 < 规则的第一个依赖的文件名。如果是一个目标文件使用隐含的规则来重建,则它代表由隐含规则加入的第一个依赖文件。 ....