天天看點

執行個體學習寫Makefile檔案

目錄

  0. 掃盲

1. 編譯,連結

2. Makefile檔案執行

3. Makefile書寫規則 

4. 案例

5. Makefile是如何工作的

6. 拔高,參考

0. 掃盲

Linux 環境下的程式員如果不會使用GNU make來建構和管理自己的工程,應該不能算是一個合格的專業程式員,至少不能稱得上是 Unix程式員(是不是誇張了點,别人說的)。   

什麼是makefile檔案?它是一個指揮檔案,指揮着源檔案編譯的先後順序,以及如何連結在一起。

執行個體學習寫Makefile檔案

寫好Makefile(或寫成makefile)檔案後,直接執行指令make,編譯器會自動執行makefile裡的指令,進行編譯、連結知道生成最終可以執行的檔案。即

3. Makefile書寫規則

其中

target是可以是目标檔案(.o)也可以是可執行檔案,還可以是個标簽(最後說)

objects是生成target依賴的檔案

command是make要執行的檔案(可以是任意Shell指令)

特殊字元:@:目标檔案,@:目标檔案,^:所有的依賴檔案,$<:第一個依賴檔案

假設檔案的關系如下圖

執行個體學習寫Makefile檔案

寫法1

執行個體學習寫Makefile檔案
執行個體學習寫Makefile檔案

參數 -o 後面是可執檔案; -c後面是待編譯的檔案。在前兩行中寫了很多重複的.o檔案,可以把它集合起來,用變量表示,如下:

寫法2

執行個體學習寫Makefile檔案
執行個體學習寫Makefile檔案

GUN的make相當強大,它可以自動推導檔案集檔案依賴關系,寫法如下:

寫法3

執行個體學習寫Makefile檔案
執行個體學習寫Makefile檔案

檔案執行完了以後生成很多.o檔案,能不能可以删除掉,可以的,寫上指令(例如clean),下面是執行的操作,例如:

寫法4

執行個體學習寫Makefile檔案
執行個體學習寫Makefile檔案

這樣執行 make clean,就會執行rm *.o 删除所有的.o檔案,即

5. Makefile如何工作的?

輸入make後,會在目錄找Makefile、makefile

如果找到,它會在檔案中找到第一個目标檔案(例子中的main2)作為最終的目标檔案

如果main2不存在,就依靠後邊的.o檔案生成

如果後邊的.o不存在,就利用下邊的g++ -c 生成

.o檔案都夠了,就連結生成最終的目标檔案

跟我一起寫Makefile-陳皓

本文轉自jihite部落格園部落格,原文連結:http://www.cnblogs.com/kaituorensheng/p/3667634.html,如需轉載請自行聯系原作者

繼續閱讀