跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 Make 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
Make
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''make'''是一个佇軟體開發中所使用的工具程式(Utility software), 經過讀取「makefile」的檔案以自動化建構軟體。伊是一種轉化檔案形式的工具,轉換的目標號做「target」;佮這个同時,伊嘛檢查檔案的依賴關係,若需要的話,伊會呼叫一寡外部軟體來完成任務。伊的依賴關係檢查系統足簡單,主要根據依賴檔案的修改時間進行判斷。大多數的情況下,伊予人用來編譯原始碼,生做結果代碼,然後共結果代碼接起來生做會當執行檔抑是庫檔案。伊使用叫做「makefile」的檔案來確定一个 target 檔案的依賴關係,然後共生做這个 target 的相關命令傳予 shell 去執行。 真濟現代軟體的開發中(如 Microsoft Visual Studio), 整合式開發環境已經取代 make,猶毋過佇咧 Unix 環境內底,猶原有誠濟工程師採用 make 來協助軟體開發。 ==起源== 目前雖然有濟濟依賴關係檢查工具,猶毋過 make 是應用上廣泛的一个。這愛歸功佇伊的被包括佇 Unix 系統當中。斯圖亞特 ・ 費爾德曼(Stuart Feldman)佇一九七七年佇貝爾實驗室(Bell Labs)里製作這个軟體。二空空三年,斯圖亞特 ・ 費爾德曼因發明了按呢一个重要的工具咧接受了美國電腦協會(ACM)頒發的軟體系統獎。 佇咧 make 誕生進前,編譯工作主要依賴佇咧作業系統內底的類似「make」、「 install」功能的 shell 指令碼。伊會當批次執行生做目標的命令,而且會使完成依賴關係的檢查。這是向現代編譯環境發展的重要一步。 ==無仝版本== make 程式已經予人使用者較濟改重 / 改寫,其中包括幾擺用仝款的檔案格式佮演算法原理重新來編寫,並且照無仝需要添一寡無四常看著的改良。 ===GNU make=== GNU make 仿的 make 的標準功能(透過 clean-room 工程)重新改寫,並加入作者感覺值得加入來新功能,常和 GNU 編譯系統做伙攏咧使用,是大多數 GNU Linux 安裝的一部份。 ===BSD make=== BSD make 是對 Adam de Boor 的製作的版本頂懸發展甲。伊編譯目標的時陣有並行計算的能力。伊佇咧 FreeBSD,NetBSD 和 OpenBSD 中間無仝款程度的改下存活落來。 ===Microsoft nmake=== 廣泛應用於微軟的 Windows,微軟乎 nmake 是 Visual Studio 隨附的命令列工具,莫佮來自 AT & T 佮貝爾實驗室的 Unix 系統 nmake 透濫。 ==優點佮缺點== 就親像其他佮 make 有悠久歷史的軟體仝款,make 有真濟咧擁護者佮反對者。伊的真濟問題因為現代大型的軟體專案的出現才暴露出來。但是真濟人會爭論講伊佇咧較捷看的情形下會當真好的工課,而且使用非常的簡單,功能強大,表達清楚。毋管按怎,make 猶原予人用來編譯真濟完整的作業系統,而且這馬咧替代品佇咧基本的操作頂頭無傷大差別。 隨著現代的整合式開發環境(IDE)的誕生,特別是非 Unix 的平台頂面,足濟程式設計師袂閣手動管理靠關係檢查,甚至免去插佗一寡檔案是這个案的一部份,是共遮的任務交予了𪜶的開發環境去做。類似的,足濟現代的程式語言有家己的特別高效的依賴關係的設定方法。 ==Makefile== ===規則=== makefile 的格式是: ` ` ` # 用“#”鋪表明注預。 target(欲生出來的文件): dependencies(予人依照的文件) # 命令頭前用的是“tab”毋是空格。鋪排空格是初交代的人容易犯的交代! Tab ↹ 命令一 Tab ↹ 號令二 Tab ↹ 號令三 . . . Tab ↹ 命令 n # 會用得使用“\”表示否行。注意,“ \”之后袂使有空格! ` ` ` * target , dependencies 佮命令構變成一个 makefile 里的一个「規則」,規則指示 make 當時以及如何重新生成 target 抑是講執行 target 下的命令 * target 通常是咱欲生成的檔案的名,排的順序無重要,但是第一个 target 是預設的 target。當 make 無帶數的時陣,自動執行頭一个 target。target 嘛會使是要求 make 完成的動作,執行這種 target 尾並袂當得著佮 target 仝名的檔案,所以,嘛叫偽 target ( phony target )。 * dependencies 是成做 target 伊需要的檔名列表。依賴會當為空,捷用的「clean」target 就定定無依賴,只有伊彼命令。若依賴無為著空,著 make 會先檢查這个依賴的「規則」。 依賴規定了當時重新來執行 target 下命令。若任何依賴比 target 更新(因為執行了依賴的「規則」的命令抑是使用者修改了依賴), make 則會重新執行 target 下的命令。 * 命令會使是任何一个 shell 會當執行的命令。 ===範例=== 比例來說明 makefile 的結構佮 make 按怎去運作咧。 做阮輸入: ` ` ` make 抑是講 make editor ` ` ` 當 editor 這乎 target 檔案無存在,抑是講 main . o、text . o 這兩个依賴檔案予人修改,攏會予 make 呼叫其下的命令「gcc-o editor main . o text . o」;紲落來伊,因為參照著 main . o 和 text . o,make 會檢查 main . o 的依賴 main . c、def . h 有沒更新,伊若有,則執行其下的命令按呢「gcc-c main . c」;仝款的道理,嘛真適用佇 text . o。 所以,有幾種無仝款的輸出: * 第一擺執行: ` ` ` gcc-c main . c gcc-c text . c gcc-o editor main . o text . o ` ` ` * main . c 抑是 / 和 def . h 有修改: ` ` ` gcc-c main . c gcc-o editor main . o text . o ` ` ` * text . c 抑是 / 和 com . h 有修改: ` ` ` gcc-c text . c gcc-o editor main . o text . o ` ` ` * main . c 和 text . c 攏有修改: ` ` ` gcc-c main . c gcc-c text . c gcc-o editor main . o text . o ` ` ` 做阮輸入: ` ` ` make install ` ` ` make 會檢查 install 的依賴 editor 敢是上新,若是,則執行其下的命令按呢「mv editor / usr / local」。 因為這過程並無產生名做「install」的檔案,所以乎,install 是一个假目標。 ===巨集=== 「 巨集」指甲是用一字串代替另外一字串的功能。佇咧 makefile 中會用得用「=」號來定義巨集,使用「$(巨集名)」 來使用巨集;猶閣會用得「+=」追加巨集的內容。慣勢上,巨集名使用大寫。承接頂懸的例: ==參見== * Apache Ant * CMake ==參考資料== ==外部連結== * GNU Make 官方網站 * GNU make 中文手冊 * 佮我做伙寫 Makefile [[分類: 待校正]]
返回到「
Make
」。