GNU Make(2) - 最簡單的make範例func.cpp func.h main.cppmain.cpp為主程式進入點,會引入 func.h檔裡的function。我們如果使用 gcc command 的方式的,每次更新就要先看func的內容是否更新,或他是否存在,來決定要不要建func.o,再同樣室內裝潢的檢查main.o,最後連結來建立主程式。故這時make就發揮它的威力了,我們新建一個makefile,然後根據rules來寫建造我們應用程式的內容。專有名詞說明:target: 工作目標prerequisites: 必要條件commands: 命令timestamp:時間戳記一條rule的賣屋內容target: prereq1 prereq2 commands要注意的是commands要擺在跳格字符(tab character)之後。makefile的範例(檔案皆在同一資料夾之內):1 # A basic makefile for "test"2 CC = ARMANIg++34 test: main.o func.o 5 $(CC) -o test main.o func.o67 main.o: main.cpp func.h8 $(CC) -c main.cpp9 10 酒店兼職func.o: func.cpp func.h11 $(CC) -c func.cpp說明:第一行是註解,以#字號為做為註解的標記。第二行的 CC是變數,這裡的內容是g++的編譯器。以第四行為例,test為target,它的prerequisites為 西裝main.o 和 fun.o,第五行為它執行的命令,在這裡 $(CC) 會被替換成 g++,最後執行建造 test程式。make的動作:第一次執行make1. make會先找到test,然後查看它的prerequisites,先看到main.o,發現沒有這個檔案。2. 便會再往下找,找長灘島到main.o,依據它的prerequisites,找到main.cpp,然後再找到func.h, 這時prerequisites齊了。3. 執行第8行的命令,建造main.o。接著make轉往建造func.o。4. 重覆之前的動作,建造了func.o,這時 test的prerequisites房屋二胎的內容齊了。5. 執行第5行的命令,建造test應用程式。第二次執行make這時會得到這樣的結果: make: `test' is up to date.因為檔案內容的時間沒有改變,所以make判定內容已是最新,不需再重新建置。更新main.cpp的內容,再重新執行make澎湖民宿這時應該會看到make的過程為:g++ -c main.cppg++ -o test main.o func.o代表make測偵到,mainc.pp的timestamp更新了,故重新建置main.o,而main.o為test的prerequisites,故也重新建置了test。要注意的是,此時並沒有建置func.o。此時應該代償體會了make的能力了吧!!另外這種從上而下(top-down)的方式是一般makefile中常見的手法,通常把最主要建置的檔案放在第一個,細節則擺在後面。
.msgcontent .wsharing ul li { text-indent: 0; }
分享
居酒屋Facebook
Plurk
YAHOO!
.msgcontent .wsharing ul li { text-indent: 0; }
分享
居酒屋Facebook
Plurk
YAHOO!
全站熱搜
留言列表