我們在在執行 make 指令時,有的時候需要加上一下參數選項來保證我們的程式的執行,其實之前已經遇到過 make 在執行指令的時候需要添加上參數選項,比如隻列印指令但不執行使用的參數是 "-n" ,還有隻執指令不列印指令的參數選項是 "-s",包含其它檔案的路徑參數選項是 "-include"等等。我們現在列舉一下 make 可以使用的參數選項,以及它們的功能是什麼。
參數選項 | 功能 |
---|---|
-b,-m | 忽略,提供其他版本 make 的相容性 |
-B,--always-make | 強制重建所有的規則目标,不根據規則的依賴描述決定是否重建目标檔案。 |
-C DIR,--directory=DIR | 在讀取 Makefile 之前,進入到目錄 DIR,然後執行 make。當存在多個 "-C" 選項的時候,make 的最終工作目錄是第一個目錄的相對路徑。 |
-d | make 在執行的過程中列印出所有的調試資訊,包括 make 認為那些檔案需要重建,那些檔案需要比較最後的修改時間、比較的結果,重建目标是用的指令,遺憾規則等等。使用 "-d" 選項我們可以看到 make 構造依賴關系鍊、重建目标過程中的所有的資訊。 |
--debug[=OPTIONS] | make 執行時輸出調試資訊,可以使用 "OPTIONS" 控制調試資訊的級别。預設是 "OPTIONS=b" ,"OPTIONS" 的可值為以下這些,首字母有效:all、basic、verbose、implicit、jobs、makefile。 |
-e,--enveronment -overrides | 使用環境變量定義覆寫 Makefile 中的同名變量定義。 |
-f=FILE,--file=FILE, --makefile=FILE | 指定檔案 "FILE" 為 make 執行的 Makefile 檔案 |
-p,--help | 列印幫助資訊。 |
-i,--ignore-errors | 執行過程中忽略規則指令執行的錯誤。 |
-I DIR,--include-dir=DIR | 指定包含 Makefile 檔案的搜尋目錄,在Makefile中出現另一個 "include" 檔案時,将在 "DIR" 目錄下搜尋。多個 "-i" 指定目錄時,搜尋目錄按照指定的順序進行。 |
-j [JOBS],--jobs[=JOBS] | 可指定同時執行的指令數目,愛沒有 "-j" 的情況下,執行的指令數目将是系統允許的最大可能數目,存在多個 "-j" 目标時,最後一個目标指定的 JOBS 數有效。 |
-k,--keep-going | 執行指令錯誤時不終止 make 的執行,make 盡最大可能執行所有的指令,直至出現知名的錯誤才終止。 |
-l load,--load-average=[=LOAD],--max-load[=LOAD] | 告訴 make 在存在其他任務執行的時候,如果系統負荷超過 "LOAD",不在啟動新的任務。如果沒有指定 "LOAD" 的參數 "-l" 選項将取消之前 "-l" 指定的限制。 |
-n,--just-print,--dry-run | 隻列印執行的指令,但是不執行指令。 |
-o FILE,--old-file=FILE, --assume-old=FILE | 指定 "FILE"檔案不需要重建,即使是它的依賴已經過期;同時不重建此依賴檔案的任何目标。注意:此參數不會通過變量 "MAKEFLAGS" 傳遞給子目錄程序。 |
-p,--print-date-base | 指令執行之前,列印出 make 讀取的 Makefile 的所有資料,同時列印出 make 的版本資訊。如果隻需要列印這些資料資訊,可以使用 "make -qp" 指令,檢視 make 執行之前預設的規則和變量,可使用指令 "make -p -f /dev/null" |
-q,-question | 稱為 "詢問模式" ;不運作任何的指令,并且無輸出。make 隻傳回一個查詢狀态。傳回狀态 0 表示沒有目标表示重建,傳回狀态 1 表示存在需要重建的目标,傳回狀态 2 表示有錯誤發生。 |
-r,--no-builtin-rules | 取消所有的内嵌函數的規則,不過你可以在 Makefile 中使用模式規則來定義規則。同時選項 "-r" 會取消所有字尾規則的隐含字尾清單,同樣我們可以在 Makefile 中使用 ".SUFFIXES",定義我們的字尾名的規則。"-r" 選項不會取消 make 内嵌的隐含變量。 |
-R,--no-builtin-variabes | 取消 make 内嵌的隐含變量,不過我們可以在 Makefile 中明确定義某些變量。注意:"-R" 和 "-r" 選項同時打開,因為沒有了隐含變量,是以隐含規則将失去意義。 |
-s,--silent,--quiet | 取消指令執行過程中的列印。 |
-S,--no-keep-going, --stop | 取消 "-k" 的選項在遞歸的 make 過程中子 make 通過 "MAKEFLAGS" 變量繼承了上層的指令行選項那個。我們可以在子 make 中使用“-S”選項取消上層傳遞的 "-k" 選項,或者取消系統環境變量 "MAKEFLAGS" 中 "-k"選項。 |
-t,--touch | 和 Linux 的 touch 指令實作功能相同,更新所有的目标檔案的時間戳到目前系統時間。防止 make 對所有過時目标檔案的重建。 |
-v,version | 檢視make的版本資訊。 |
-w,--print-directory | 在 make 進入一個子目錄讀取 Makefile 之前列印工作目錄,這個選項可以幫助我們調試 Makefile,跟蹤定位錯誤。使用 "-C" 選項時預設打開這個選項。 |
--no-print-directory | 取消 "-w" 選項。可以是 用在遞歸的 make 調用的過程中 ,取消 "-C" 參數的預設打開 "-w" 的功能。 |
-W FILE,--what-if=FILE, --new-file=FILE, --assume-file=FILE | 設定檔案 "FILE" 的時間戳為目前的時間,但不更改檔案實際的最後修改時間。此選項主要是為了實作對所有依賴于檔案 "FILE" 的目标的強制重建。 |
--warn-undefined-variables | 在發現 Makefile 中存在沒有定義的變量進行引用時給出告警資訊。此功能可以幫助我們在調試一個存在多級嵌套變量引用的複雜 Makefile。但是建議在書寫的時候盡量避免超過三級以上的變量嵌套引用。 |