Makefile的編寫及四個特殊符號的意義@、$@、$^、$


 

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]),那么,其值為空。

 

' - ' 符號的使用
     
     通常刪除,創建文件如果碰到文件不存在或者已經創建,那么希望忽略掉這個錯誤,繼續執行,就可以在命令前面添加 -,
     -rm dir;
     -mkdir aaadir;
 
' $ '符號的使用
          美元符號$,主要擴展打開makefile中定義的變量
 
' $$ '符號的使用
          $$ 符號主要擴展打開makefile中定義的shell變量
 

 

例如:
     @for dir in $(subdirs); do \

          @echo -------compiling $$dir-----------; \
          $(MAKE) -C

     done

以上subdir屬於makefile中定義的變量,用$
       dir則屬於makefile中定義的shell變量,所有使用是使用 ‘ $$ ’ 而不是 ' $ '
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM