1.makefile
gnu make的工作分為兩個階段。在第一階段,make讀取makefile檔案、內建變數及其值、隱含規則和具體規則、構造所有目標的依賴關係以及所有目標各自的依賴等。在第二階段,make決定需要重新構造的目標並使用必要的規則進行工作。make工作第一階段發生的擴充套件是立即擴充套件,直接把變數和函式擴充套件為makefile檔案語句的一部分。make工作第二階段發生的擴充套件稱為延時擴充套件。
2. makefile命令的使用
-cdir :在讀入makefile之前,把路徑切換到dir下。如果同時使用幾個『-c』選項,則eachis interpreted relative to the previous one。
-d :在正常處理後列印除錯資訊。
-e :設定環境變數的優先權高於makefile檔案變數的優先權。
-ffile :將file設定為makefile檔案。
-i :忽略在執行重建檔案命令時產生的所有錯誤。
-idir :指定搜尋makefile檔案的路徑。如果同時使用幾個『-i』選項,則按照次序搜尋這些路徑。
-k :在出現錯誤後,盡可能的繼續執行。也就是說當乙個目標建立失敗後,所有依靠它的目標檔案將不能重建,而這些目標的其它依賴則可繼續處理。
-n :列印要執行的命令,但卻不執行它們。
-ofile :即使檔案file比它的依賴舊,也不重建該檔案。
-p :列印資料庫,其中的資料來自讀入makefile檔案的結果;列印之後執行。
make –qp 列印資料庫後不執行。make –p –f/dev/null 列印預定義的規則和變數的資料庫。
-q :不列印也不執行命令。如果所有目標都已經更新到最新,make的退出狀態是0;如果一部分需要更新,退出狀態是1;如果make遇到錯誤,退出狀態是2。
-r :禁止使用預定義的隱含規則,同時也清除了預設的字尾列表和字尾規則。注意預設的變數仍然有效。
-r :禁止使用內建的規則變數。『-r』自動使『-r』生效。
-s :不回顯執行的命令。-s :使『-k』失效。除非在遞迴呼叫make時,通過變數makeflags從上層make繼承『-k』,或環境中設定了選項『-k』,否則沒有必要使用該選項。
-t :標記檔案已經更新到最新,但實際卻沒有更新它們。
-w :列印執行makefile檔案時涉及的所有工作目錄。
-wfile :pretendthat the file has been just modified。在和『-n』一起使用時,將表明更改該檔案會發生什麼。如果沒有和『-n』一起使用,那麼它和在執行make之前對該檔案使用touch命令的結果幾乎一樣,但使用該選項make只是在想象中更改該檔案的時間。
makefile之萬用字元擴充套件
makefile中使用萬用字元的注意點 關於makefile中的萬用字元話題其實很簡單,在使用時心中知道以下幾點就ok。1 makefile中的萬用字元與通常的shell萬用字元是一樣的。萬用字元匹配?任何的單一字元 任何的字元字串 set 任何在set裡的字元 set 任何不在set裡的字元 2 ...
makefile語法 Makefile的語法
假如乙個目標檔案所依賴的依賴檔案很多,我們豈不是要寫很多規則?這顯然不合乎常理。我們可以使用萬用字元解決這些問題。我們對上節程式進行修改 如下 test a.o b.o gcc o test o c gcc c o o 表示所用的.o檔案 c 表示所有的.c檔案 表示目標 表示所有依賴檔案 在該目錄...
makefile學習筆記 makefile概述
20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...