很早之前就想試著寫一個Makefile,一直沒寫,上次DH問我怎么寫,剛好自己想寫一個,于是就goolge了一下。
Makefile的編寫規則
Makefile文件中,注釋以"#"開始
Makefile文件中最重要的是描述文件的依賴關系的說明,其一般的格式為:
target: components
TAB rule
第一行表示的是依賴關系,第二行是規則。
例如上面那個Makefile文件的第二行:main: main.o mytool1.o mytool2.o,表示我們的目標(target)main的依賴對象(components)是main.o mytool1.o mytool2.o
當依賴的對象在目標修改后修改的話,就要去執行規則行所指定的命令。
例如上面那個Makefile文件的第三行:gcc -o main main.o mytool1.o mytool2.o
注意:規則行中的TAB表示那里是一個TAB 鍵。
于是有問題了,第一個問題:Makefile的文件隨便命名是可以的么,試著寫了一個其它的名字,發現不行,但是貌似不區分大小寫,所以寫makefile也是可以的,但是一般還是按照規則來寫,第一個M大寫。第二個問題:如果存在多個Makefile呢?根據第一個,肯定是只有規范的命名的被識別。第三個問題:如果我當前文件下有多個C文件需要編譯呢?也就是要生成兩個輸出文件怎么辦?這個還真不懂,于是問了一下金師兄就解決了,寫一個空的依賴文件就OK了。比如說我要編譯當前文件夾下的Cilent.c和Server.c,這樣我在第一行加個
target:Client Server
(空行,沒有規則)
Client:Client.c
(TAP)gcc -Wall -o Client Client.c
Server:Server.c
(TAP)gcc -Wall -o Server Server.c