<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=Make</id>
	<title>Make - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=Make"/>
	<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=Make&amp;action=history"/>
	<updated>2026-04-26T08:30:22Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.taigi.ima.org.tw/w/index.php?title=Make&amp;diff=403408&amp;oldid=prev</id>
		<title>TaiwanTonguesApiRobot：​從 JSON 檔案批量匯入</title>
		<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=Make&amp;diff=403408&amp;oldid=prev"/>
		<updated>2025-08-22T10:40:14Z</updated>

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