= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號后面的值
+= 是添加等號后面的值
“=”和“:=”的區別:
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 了。
ref:https://www.cnblogs.com/wanghuaijun/p/8092747.html
'@' 符號的使用
通常makefile會將其執行的命令行在執行前輸出到屏幕上。如果將‘@’添加到命令行前,這個命令將不被make回顯出來。
例如:@echo --compiling module----; // 屏幕輸出 --compiling module----
echo --compiling module----; // 沒有@ 屏幕輸出echo --compiling module----
' - ' 符號的使用
通常刪除,創建文件如果碰到文件不存在或者已經創建,那么希望忽略掉這個錯誤,繼續執行,就可以在命令前面添加 -,
-rm dir;
-mkdir aaadir;
ref:https://blog.csdn.net/u012989012/article/details/80572043