在跟我一起寫makefile中使用的時gnu make,在這裡我用的是codeblocks中帶的mingw32-make進行的相關操作。
makefile內的命令格式大致為
target: preprerequisite
[tab]command
首先先接觸乙個簡單的例子。
在相關c資料夾中建立相關的標頭檔案和c檔案,如:make_test/hello.h, make_test/hello.c make_test/main.c make_text/makefile.txt(或者makefile),其相應**為:
hello.h
#ifndef hello_h#define hello_h#include
void
printf_hello();
#endif
//hello_h
hello.c
#include"hello.h
"void
printf_hello()
main.c
#include"hello.h
"#includeint main(void
)
makefile.txt(或者makefile)
main.exe: main.o hello.ogcc -o main.exe main.o hello.o
hello.o: hello.c hello.h
gcc -c hello.c
main.o: main.c
gcc -c main.c
.phony: clean
clean:
-del hello.o main.o
在make_test資料夾下開啟命令列終端進行如下操作
mingw32-make --file makefile.txt main.exe
該命令可以生成相應的中間檔案和最終的可執行檔案
mingw32-make --file makefile.txt .phony
該命令可以刪除相應的中間檔案。
對於上述的makefile有點複雜當然我們可以新增一些變數進行代換,如:
obj_name =main.o hello.omain.exe: main.o hello.o
gcc -o main.exe main.o hello.o
hello.o: hello.c hello.h
gcc -c hello.c
main.o: main.c
gcc -c main.c
.phony: clean
clean:
-del $(obj_name)
將其中的main.o 和hello.o用變數obj_name進行代換呼叫命令 mingw32-make --file makefile .phony也是可以完成相應的刪除工作
當然利用make工具的隱晦規則也是可以的,該隱晦規則為相應的目標檔案會擴充套件新增target_name.c,如
obj_name =main.o hello.omain.exe: main.o hello.o
gcc -o main.exe main.o hello.o
hello.o: hello.h
gcc -c hello.c
main.o:
gcc -c main.c
.phony: clean
clean:
-del $(obj_name)
跟我一起寫 Makefile
概述 什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解h...
跟我一起寫 Makefile
概述 什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解h...
跟我一起寫 Makefile
跟我一起寫 makefile 陳皓 概述 什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果...