跟我一起寫Makefile

2022-05-05 05:27:09 字數 1815 閱讀 1786

在跟我一起寫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.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 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.o

main.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.o

main.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的編輯器,但如果...