Linux程序員必須學會使用GNU make來構建和管理自己的軟件工程。GNU的make能夠使整個軟件工程的編譯、鏈接只需要一個命令就可以完成。
make在執行時, 需要一個命名爲makefile的文件。makefile文件描述了整個工程的編譯,鏈接等規則。其中包括:工程中的哪些源文件需要編譯以及如何編譯;需要創建哪些庫文件以及如何創建這些庫文件、如何最後產生我們想要得到的可執行文件。
規則:用於說明如何生成一個或多個目標文件
規則格式如下:
targets : prerequisites
command
目標 : 依賴
命令
main.o : main.c
gcc –c main.c
**命令需要以【TAB】鍵開始**
在makefile 中,規則的順序是很重要的,因爲,Makefile中只應該有一個最終目標,其它的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終目標是什麼。 一般來說,定義在Makefile中的目標可能會有很多,但是第一條規則中的目標將被確立爲最終的目標。
make命令默認在當前目錄下尋找名字爲makefile或者Makefile的工程文件,當名字不爲這兩者之一時,可以使用如下方法指定:make -f 文件名
makefile中把那些沒有任何依賴只有執行動作的目標稱爲“僞目標”(phony targets)。
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
“.PHONY” 將“clean”目標聲明爲僞目標
在makefile中,存在系統默認的自動化變量
$^:代表所有的依賴文件
$@:代表目標
$<:代表第一個依賴文件
例:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
=》
hello: main.o func1.o func2.o
gcc $^ -o $@
Makefile中“#”字符後的內容被視作註釋。
hello: hello.c
@gcc hello.c –o hello
@:取消回顯(演示)