Make - Linux命令 - UNIX命令

make - GNU使實用程序維護一組程序

概要

make [ -f makefile ] [option] ... target ...

警告

本頁是GNU make的文檔摘錄 它只是偶爾更新,因為GNU項目不使用nroff。 有關完整的最新文檔,請參閱Texinfo源文件make.texinfo中的Info文件make.info

描述

make實用程序的目的是自動確定哪些大型程序需要重新編譯,並發出重新編譯它們的 命令 。 該手冊描述了由Richard Stallman和Roland McGrath編寫的make的GNU實現。 我們的例子顯示C程序,因為它們是最常見的,但是您可以使用任何編譯器可以使用shell命令運行的編程語言。 實際上, make並不限於程序。 您可以使用它來描述任何其他文件必須在其他文件發生更改時自動從其他文件更新的任何任務。

要準備使用make ,必須編寫一個名為makefile的文件 ,它描述程序中文件之間的關係,並說明用於更新每個文件的命令。 在一個程序中,通常可執行文件是從目標文件更新的,而目標文件又是通過編譯源文件來完成的。

一旦存在一個合適的makefile,每次你改變一些源文件,這個簡單的shell命令:

使

足以執行所有必要的重新編譯。 make程序使用makefile數據庫和文件的最後修改時間來決定哪些文件需要更新。 對於每個文件,它都會發布記錄在數據庫中的命令。

makefile中執行命令來更新一個或多個目標名稱 ,其中名稱通常是一個程序。 如果不存在-f選項, make將按照該順序查找makefile GNUmakefilemakefileMakefile

通常你應該調用你的makefile makefile或者Makefile 。 (我們推薦使用Makefile,因為它出現在目錄列表的開頭附近,緊鄰其他重要文件,例如README 。)檢查名字GNUmakefile並不推薦用於大多數makefile。 如果您有一個特定於GNU make的makefile,那麼您應該使用這個名稱,並且make的其他版本不會理解它。 如果makefile是“ - ”,則讀取標準輸入。

如果目標依賴於自上次修改目標後修改的先決條件文件,或者目標不存在,則將更新作為目標。

OPTIONS

-b

-m

為了與其他版本的make兼容,這些選項被忽略。

-C dir

在讀取makefile或執行其他任何操作之前,切換到目錄dir 。 如果指定了多個-C選項,則每個選項都相對於前一個選項進行解釋: -C / -C等同於-C / etc。 這通常與make的遞歸調用一起使用

-d

除正常處理外還打印調試信息。 調試信息指出正在考慮重新創建哪些文件,正在比較哪些文件時間以及哪些結果,哪些文件實際需要重新映射,哪些隱式規則會被考慮並應用哪些 - 有關如何做出決定的一切都很有趣該怎麼辦。

-e

將來自環境的變量優先於makefile中的變量。

-f 文件

使用文件作為生成文件。

-一世

忽略為重新創建文件而執行的命令中的所有錯誤。

- 我是

指定目錄dir以搜索包含的makefile。 如果使用幾個-I選項來指定多個目錄,則按指定的順序搜索目錄。 與使用make的其他標誌的參數不同,使用-I標誌給出的目錄可能直接位於標誌之後: -I dir被允許,以及-I dir。 該語法允許與C預處理器的-I標誌兼容。

-j 職位

指定同時運行的作業(命令)的數量。 如果有多個-j選項,最後一個是有效的。 如果-j選項沒有參數, make不會限制可以同時運行的作業數量。

-k

出錯後繼續盡可能多。 雖然失敗的目標以及依賴它的目標不能重新製作,但這些目標的其他依賴關係可以完全相同。

-l

-l 負載

指定如果有其他作業正在運行並且平均負載至少為負載 (浮點數),則不應啟動新作業(命令)。 如果沒有參數,請刪除以前的裝載限制。

-n

打印將執行的命令,但不執行它們。

-o 文件

即使文件文件比其依賴關係舊,也不要重新製作文件文件,也不要因文件更改而重做任何文件 。 本質上,文件被視為非常古老,其規則被忽略。

-p

打印讀取makefile所產生的數據庫(規則和變量值); 然後照常執行或另行指定。 這也會打印由-v開關給出的版本信息(見下文)。 要打印數據庫而不嘗試重新製作任何文件,請使用make -p -f / dev / null。

-q

``問題模式''。 不要運行任何命令或打印任何內容; 只要返回的退出狀態為零,如果指定的目標已經是最新的,否則非零。

-r

消除內置隱式規則的使用。 還要清除後綴規則的默認後綴列表。

-s

無聲操作; 執行時不要打印命令。

-S

取消-k選項的效果。 除非在遞歸make-k可能通過MAKEFLAGS從頂層make繼承,或者如果在環境中的MAKEFLAGS中設置-k ,那麼這是絕對必要的。

-t

觸摸文件(將它們標記為最新,而不是真正改變它們)而不是運行它們的命令。 這被用來假裝命令已經完成,以欺騙未來的make調用。

-v

打印make程序的版本以及版權,作者列表以及沒有保修的通知。

-w

在其他處理之前和之後打印包含工作目錄的消息。 這對追踪來自遞歸make命令的複雜嵌套的錯誤可能很有用。

-W 文件

假設目標文件剛剛被修改。 當與-n標誌一起使用時,這將顯示如果您要修改該文件會發生什麼情況。 沒有-n ,它幾乎與在運行make之前在給定文件上運行觸摸命令幾乎相同,只是修改時間僅在make的想像中改變