Makefile变量
$^ 所有的依赖目标的集合,以空格分隔
[email protected] 表示规则中的目标文件集
$? 所有比目标新的依赖目标的集合,以空格分隔
$< 依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。
$(@D) 表示"[email protected]"的目录部分(不以斜杠作为结尾) ,如果"[email protected]"值是"dir/foo.o",那么"$(@D)"就是"dir",而如果"[email protected]"中没有包含斜杠的话,其值就是"."(当前目录)
$(@F) 表示"[email protected]"的文件部分,如果"[email protected]"值是"dir/foo.o",那么"$(@F)"就是"foo.o","$(@F)"相当于函数"$(notdir [email protected])"
Makefile赋值语句
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
备注:makefile中“=”和“:=”的区别到底有什么区别
1、"="
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子: x = foo y = $(x) bar x = xyz 在上例中,y的值将会是 xyz bar ,而不是 foo bar 。
2、":="
":="表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。 x := foo y := $(x) bar x := xyz 在上例中,y的值将会是foo bar,而不是xyz bar了。
原文地址:https://www.cnblogs.com/baiyou123/p/9862215.html
时间: 2024-10-29 11:00:07