https://www.cnblogs.com/sky-heaven/p/9450435.html
Makefile一般的格式是:
target:components
rule
一、@
這個符串通常用在“規則”行中,表示不顯示命令本身,而只顯示它的結果,例如Makefile中的內容為:
DIR_OBJ=./obj
CMD_MKOBJDIR=if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi
mkobjdir:
@${CMD_MKOBJDIR}
命令行執行如下:
make mkobjdir
此時不會顯示在命令行不會顯示出if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi,但如果規則行的TAB后沒有以@開頭,則會顯示,不信可以試試。
二、$@、$^、$<
這三個分別表示:
$@ --代表目標文件(target)
$^ --代表所有的依賴文件(components)
$< --代表第一個依賴文件(components中最左邊的那個)。
$? --代表示比目標還要新的依賴文件列表。以空格分隔。
$% --僅當目標是函數庫文件中,表示規則中的目標成員名。例如,如果一個目標是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。如果目標不是函數庫文件(Unix下是[.a],Windows下是[.lib]),那么,其值為空。
三
@echo -------compiling $$dir-----------; \
$(MAKE) -C
done