簡要說下makefile的乙個基本格式:
目標:依賴檔案(目標)
【tab】命令
「目標」 :是你要生成的或操作的命令的索引
「依賴」 :是生成目標依賴的檔案或目標【依賴檔案的任一處改動,將導致已存在的目標檔案過期】
「命令」 :是為了生成目標的給shell執行的命令
需要注意的是,依賴的作用:
【依賴檔案的任一處改動,將導致已存在的目標檔案過期】
依賴的作用就是決定目標是否過期,是否需要重新編譯。
舉個例子:
#include
#include
"mylib1.h"
#include
"mylib2.h"
intmain
(int argc,
char ar**)
我的makefile可以寫成
helloworld : stdio.h mylib1.h mylib2.h other.o
gcc -o helloworld helloworld.c
也可以寫成
helloworld : other.o
gcc -o helloworld helloworld.c
前者希望在stdio.h mylib1.h,mylib2.h,other.o 改變的時候重新編譯helloworld.c,後者希望僅僅在other.o改變的時候重新編譯helloworld.c。
因此,你想helloworold在什麼改變的時候重新編譯,就把什麼寫在依賴裡。這就是依賴,並不死板的規定所有標頭檔案必須寫在依賴裡。(不過一般而言,為了目標能正常執行,都希望自己寫得標頭檔案發生了改變,重新編譯目標)
依賴的另外乙個常做用途是:執行指定的目標
例如:.phony: all
all : helloworld clean
helloworld:helloworld.o
gcc helloworld.o -o helloworld
helloworld.o:
gcc -c helloworld.c
clean:
rm helloworld.o
all作為終極目標(即makefile的最上面的第乙個目標),依賴helloworld和clean,因此,執行生成all目標前(實際上由於all目標沒有命令,因此在處理完依賴後直接退出,並沒有all生成),會先執行helloworld和clean目標。 如何寫 makefile檔案
如何寫 makefile檔案 學習別人的程式就面臨著重寫makefile的問題.下面以問答的形式來解釋如何寫makefile檔案.1.makefile的核心 target.目標檔案 object檔案 可執行檔案 標籤 prerequisites 生成target所需要的檔案,也可以是target中的...
Makefile自動生成標頭檔案依賴
makefile自動生成標頭檔案依賴是很常用的功能,本文的目的是想盡量詳細說明其中的原理和過程。首先給出乙個本人在小專案中常用的makefile模板,支援自動生成標頭檔案依賴。cc gcc cflags wall o includeflags ldflags objs seq.o targets t...
Makefile自動生成標頭檔案依賴
makefile自動生成標頭檔案依賴是很常用的功能,本文的目的是想盡量詳細說明其中的原理和過程。首先給出乙個本人在小專案中常用的makefile模板,支援自動生成標頭檔案依賴。cc gcc cflags wall o includeflags ldflags objs seq.o targets t...