前蘋果 BSD 開發者 Jordan Hubbard 加盟了 iXsystems 公司開發下一代 BSD 系統 NextBSD。NextBSD 是基於 FreeBSD,但不是 FreeBSD 的分支,它基於 FreeBSD 核心,再加上 Mach,以及 Common Object Runtime 和 Libdispatch 等。開發者稱,NextBSD 將走向一條完全獨立的道路,它試圖快刀斬亂麻,為使用者提供新的技術。
什麼是 make?
當你寫一個簡單的程式,只有一到兩個原始檔的時候,輸入
% cc file1.c file2.c
就沒什麼問題,但如果有很多原始檔就會很煩人──編譯的時間也會很長。
一個方法就是使用目標檔案,只在原始檔有改變的情況下才重新編譯原始檔。因此你可以這樣做:
% cc file1.o file2.o...file37.c...
上次編譯後,file37.c 發生了改變,但其他檔案沒有。這樣做可以讓編譯過程快很多,但是也不能解決累人的輸入問題。
或者我們可以使用一個 shell script 來解決輸入問題,但是也需要重新編譯所有檔案,在大型專案上很沒有效率。
如果有成百上千的原始檔的話怎麼辦?如果我們在與很多人合作寫程式,別人對原始檔進行了修改,又沒有告訴你,該怎麼辦?
也許我們可以把以上兩種方法結合,寫一種像 shell script 一樣的東西。這種檔案包含某種技巧可以決定什麼時候該對原始檔進行編譯。現在所有我們要的就是一個程式可以懂得這種技巧,因為要懂得這種技巧,shell 還沒那麼大的能耐。
這個程式就叫 make。它讀入一個檔案,叫 makefile,這個檔案決定了原始檔之間的依賴關係。而且決定了原始檔什麼時候該編譯什麼時候不應該編譯。例如,某個規則可以說 “ 如果 fromboz.o 比 fromboz.c 要舊,意思就是有人修改了 fromboz.c,因此我們需要重新編譯這個檔案。”這個 makefile 還有規則通知 make 該 怎麼 重新編譯原始檔,因此 make 是一個強大得多的工具。
makefile 通常和相關的原始檔儲存在同一個目錄下,可以叫做 makefile,Makefile 或者 MAKEFILE。大多數程式設計師會使用 Makefile 這個名字,因為這樣可以讓這個檔案被放在目錄列 表的頂端,可以很容易得看見
前蘋果 BSD 開發者 Jordan Hubbard 加盟了 iXsystems 公司開發下一代 BSD 系統 NextBSD。NextBSD 是基於 FreeBSD,但不是 FreeBSD 的分支,它基於 FreeBSD 核心,再加上 Mach,以及 Common Object Runtime 和 Libdispatch 等。開發者稱,NextBSD 將走向一條完全獨立的道路,它試圖快刀斬亂麻,為使用者提供新的技術。
什麼是 make?
當你寫一個簡單的程式,只有一到兩個原始檔的時候,輸入
% cc file1.c file2.c
就沒什麼問題,但如果有很多原始檔就會很煩人──編譯的時間也會很長。
一個方法就是使用目標檔案,只在原始檔有改變的情況下才重新編譯原始檔。因此你可以這樣做:
% cc file1.o file2.o...file37.c...
上次編譯後,file37.c 發生了改變,但其他檔案沒有。這樣做可以讓編譯過程快很多,但是也不能解決累人的輸入問題。
或者我們可以使用一個 shell script 來解決輸入問題,但是也需要重新編譯所有檔案,在大型專案上很沒有效率。
如果有成百上千的原始檔的話怎麼辦?如果我們在與很多人合作寫程式,別人對原始檔進行了修改,又沒有告訴你,該怎麼辦?
也許我們可以把以上兩種方法結合,寫一種像 shell script 一樣的東西。這種檔案包含某種技巧可以決定什麼時候該對原始檔進行編譯。現在所有我們要的就是一個程式可以懂得這種技巧,因為要懂得這種技巧,shell 還沒那麼大的能耐。
這個程式就叫 make。它讀入一個檔案,叫 makefile,這個檔案決定了原始檔之間的依賴關係。而且決定了原始檔什麼時候該編譯什麼時候不應該編譯。例如,某個規則可以說 “ 如果 fromboz.o 比 fromboz.c 要舊,意思就是有人修改了 fromboz.c,因此我們需要重新編譯這個檔案。”這個 makefile 還有規則通知 make 該 怎麼 重新編譯原始檔,因此 make 是一個強大得多的工具。
makefile 通常和相關的原始檔儲存在同一個目錄下,可以叫做 makefile,Makefile 或者 MAKEFILE。大多數程式設計師會使用 Makefile 這個名字,因為這樣可以讓這個檔案被放在目錄列 表的頂端,可以很容易得看見