print xxx: *.c *.h echo $? echo $< echo $^ echo $@ touch print
$? 所有比目标文件更新的依赖文件列表,空格分割。如果目标是静态库文件名,代表的是库成员( .o文件)。
$< 规则的第一个依赖文件名。如果是一个目标文件使用隐含规则来重建,则它代表由隐含规则加入的第一个依赖文件
$^ 规则的所有依赖文件列表,使用空格分隔。如果目标是静态库文件,它所代表的 只能是所有库成员( .o文件)名。一个文件可重复的出现在目标的依赖中,变量 “ $^”只记录它的一次引用情况。就是说变量“ $^”会去掉重复的依赖文件
$@ 表示规则的目标文件名。如果目标是一个文档文件( Linux中,一般称.a文件为 文档文件,也称为静态库文件),那么它代表这个文档的文件名。在多目标模式 规则中,它代表的是哪个触发规则被执行的目标文件名。
如make xxx 就会输出xxx, make 则会输出print