小弟剛剛學LINUX 下的C/C++編程,同事告訴我要用makefile來編譯 ,再問之如何寫makefile時,答:makefile是很難的東西,你可以使用國外高手寫的makefile來編譯。
疑惑中,開啟所謂高手的makefile,果然好長,果然看不懂。
不服氣,到網上找一些makefile的教程,儘是些檔案依賴、目標之類的理解不了的名次。
於是,謬論就這樣在心中紮根了。
兩星期後,也就是今天,偶然的一個測試讓我明白了————makefile實在是很簡單,為啥教程都那麼複雜呢?
當然,本文所提到的,是針對初學者的"Hello World!"層級的makefile,並不能否認makefile的進階功能的複雜和強大。我目前所能夠理解到的makefile,就是一個批次程式而已。(如同Linux下的shell檔案)
makefile關鍵的處理步驟,就是調用編譯器來執行編譯,windows下是cl,Linux下是g++。Windows下的make程式是nmake.exe,Linux下是make。
咱們先寫一個簡單的C程式:
#include <stdio.h> int main() { printf("hello world!/n"); getchar(); return 1; } |
把這個程式儲存為test.cpp。
在WINDOWS下執行編譯(先執行c:/programe files/vs2003/Vc7/bin/vcvars32.bat):cl test.cpp
在Linux下執行編譯:g++ test.cpp
很簡單嘛!
然後寫makefile檔案:
anyname: cl test.cpp #在linux下,上一行寫成 g++ test.cpp #注意cl這一行:前面的縮排是一個tab鍵,一定要是tab才可以 #第一行的anyname可以是任何名字,但是要加上冒號 |
在WINDOWS下使用NMAKE編譯(先執行c:/programe files/vs2003/Vc7/bin/vcvars32.bat):nmake.exe
在Linux下使用MAKE編譯:make
呵呵,很簡單吧?其實makefile中大多都是變數的定義,最終把這些變數的值作為cl或g++的參數來使用。
希望任何教程都先展示一個Hello World後在開始傳教,對於菜鳥來說,第一次成功的信心是最好的鼓勵。