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!

arrow
arrow
    全站熱搜

    ap05apuigd 發表在 痞客邦 留言(0) 人氣()