天天看點

make: *** 沒有規則可以建立目标“install”。 停止。_make指令參數和選項大彙總...

我們在在執行 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。但是建議在書寫的時候盡量避免超過三級以上的變量嵌套引用。
make: *** 沒有規則可以建立目标“install”。 停止。_make指令參數和選項大彙總...