makefile的擴充套件

2021-10-04 07:56:43 字數 1297 閱讀 1588

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...