作為Linux或Unix下的程式開發人員,大家一定都遇到過Makefile,用make命令來編譯自己寫的程式確實是很方便。一般開發情況下,大家都是手工寫一個簡單Makefile。下面先給一個最簡單的示例程式碼:
#makefile示例說明:
object= main.o function.o
change:$(object)
cc -o change $(object)
mv change $(HOME)/bin
main.o:
cc -c main.c -I$(HOME)/program/date/include
function.o:
cc -c function.c -I$(HOME)/program/date/include
clean:
rm change $(object)
這裡是使用unix下的CC編譯器,當然也能換成gcc
最後生成的可執行檔名:change
源程式檔案:main.c function.c
.h檔案(標頭檔案)所在目錄:$(HOME)/program/date/include
中間目標檔名:main.o function.o
當在shall中執行命令:
make clean將會執行
rm change $(object)刪除檔案: change main.o function.o
語句:
mv change $(HOME)/bin將最終生成的可執行檔案移動到
$(HOME)/bin這一步可以不要,但這樣符合目錄管理規範,而且$(HOME)/bin一般在環境變數PATH中有設定,這樣可以在任意目錄下時也能執行可執行檔案。
注意:
makefile編輯時另起一行,注意不能用空格,要用TAB鍵,否則會報錯
makefile裡面的註釋用#,其它都會報錯
Makefile簡單介紹
Makefile是用於自動編譯和連結的,一個工程有很多檔案組成,每一個檔案的改變都會導致工程的重新連結,但是不是所有的檔案都需要重新編譯,Makefile中紀錄有檔案的資訊,在make時會決定在連結的時候需要重新編譯哪些檔案。
Makefile的宗旨就是:讓編譯器知道要編譯一個檔案需要依賴其他的哪些檔案。當那些依賴檔案有了改變,編譯器會自動的發現最終的生成檔案已經過時,而重新編譯相應的模組。
例項3: