目錄
0. 掃盲
1. 編譯,連結
2. Makefile檔案執行
3. Makefile書寫規則
4. 案例
5. Makefile是如何工作的
6. 拔高,參考
0. 掃盲
Linux 環境下的程式員如果不會使用GNU make來建構和管理自己的工程,應該不能算是一個合格的專業程式員,至少不能稱得上是 Unix程式員(是不是誇張了點,别人說的)。
什麼是makefile檔案?它是一個指揮檔案,指揮着源檔案編譯的先後順序,以及如何連結在一起。

寫好Makefile(或寫成makefile)檔案後,直接執行指令make,編譯器會自動執行makefile裡的指令,進行編譯、連結知道生成最終可以執行的檔案。即
3. Makefile書寫規則
其中
target是可以是目标檔案(.o)也可以是可執行檔案,還可以是個标簽(最後說)
objects是生成target依賴的檔案
command是make要執行的檔案(可以是任意Shell指令)
特殊字元:@:目标檔案,@:目标檔案,^:所有的依賴檔案,$<:第一個依賴檔案
假設檔案的關系如下圖
寫法1
參數 -o 後面是可執檔案; -c後面是待編譯的檔案。在前兩行中寫了很多重複的.o檔案,可以把它集合起來,用變量表示,如下:
寫法2
GUN的make相當強大,它可以自動推導檔案集檔案依賴關系,寫法如下:
寫法3
檔案執行完了以後生成很多.o檔案,能不能可以删除掉,可以的,寫上指令(例如clean),下面是執行的操作,例如:
寫法4
這樣執行 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,如需轉載請自行聯系原作者