Linux下gcc/g++為我們提供了一個完善的c/c++程式編譯環境,可是為什麼還需要Makefile呢?原因很簡單,Makefile就是告訴g++編譯器怎樣進行編譯的一組規則。g++提供的make工具能夠讀取Makefile所定義的規則,并生成我們所需要的目标檔案。當然我們也可以不寫Makefile,用g++手動一個檔案一個檔案按順序編譯,但是當你面對大型項目的時候這種手動的方法就無能為力了,需要一套自動化的機制,Makefile的目的也正在于此。
Sample: 項目有兩個檔案,hello.cpp 和add.h
Makefile:
hello: hello.cpp add.o
g++ hello.cpp -o hello
add.o: add.h
g++ add.h -c
Makefile的格式:
target file: source file1,source file2,....
[command]
[command]
target file2: source file3, source file4..
[command]
[command]
Make工具以遞歸回朔的方式解釋Makefile,首先看target file是否存在或者是否過期,如是,并且source files均存在,則執行下面的command.., 跳過command檢查target file2. 最後回朔。生成我們最終的目标檔案。