1. 程式人生 > >makefile '@' '$' '$$' '-' '-n ' 使用小結

makefile '@' '$' '$$' '-' '-n ' 使用小結

編譯程式碼時,會程序接觸makefile,會涉及到一些符號,由於不明白有些意思經常出現問題,在此歸納一下。'@'符號的使用      通常makefile會將其執行的命令列在執行前輸出到螢幕上。如果將‘@’新增到命令列前,這個命令將不被make回顯出來。      例如:@echo --compiling module----;  // 螢幕輸出 --compiling module----                               echo --compiling module----;  // 沒有@ 螢幕輸出echo --compiling module----    
' - '
 符號的使用
     通常刪除,建立檔案如果碰到檔案不存在或者已經建立,那麼希望忽略掉這個錯誤,繼續執行,就可以在命令前面新增 -,     -rm dir;     -mkdir aaadir;' $ '符號的使用         美元符號$,主要擴充套件開啟makefile中定義的變數' $$ '符號的使用          $$ 符號主要擴充套件開啟makefile中定義的shell變數例如:     @for dir in $(subdirs); do \          @echo -------compiling $$dir-----------; \
          $(MAKE) -C
dir||exit"dir||exit"?"; \
     done以上subdir屬於makefile中定義的變數,而dir則屬於makefile中定義的shell變數,所有使用是使用 ‘ $$ ’ 而不是 ' $ '。如果make執行時,帶入make引數“-n”或“--just-print”,那麼其只是顯示命令,但不會執行命令,這個功能很有利於我們除錯我們的Makefile,看看我們書寫的命令是執行起來是什麼樣子的或是什麼順序的。 

而make引數“-s”或“--slient”則是全面禁止命令的顯示。
補充說明自動化變數:

[email protected]  表示規則中的目標檔案集。在模式規則中,如果有多個目標,那麼,"

[email protected]"就是匹配於目標中模式定義的集合。

$%  僅當目標是函式庫檔案中,表示規則中的目標成員名。例如,如果一個目標是"foo.a(bar.o)",那麼,"$%"就是"bar.o","[email protected]"就是"foo.a"。如果目標不是函式庫檔案(Unix下是[.a],Windows下是[.lib]),那麼,其值為空。

$<   依賴目標中的第一個目標名字。如果依賴目標是以模式(即"%")定義的,那麼"$<"將是符合模式的一系列的檔案集。注意,其是一個一個取出來的。

$?   所有比目標新的依賴目標的集合。以空格分隔。

$^   所有的依賴目標的集合。以空格分隔。如果在依賴目標中有多個重複的,那個這個變數會去除重複的依賴目標,只保留一份。

轉載:https://blog.csdn.net/kehyuanyu/article/details/21454789

相關推薦

no