makefile 目標 依賴檔案寫法

2021-10-11 09:23:25 字數 1296 閱讀 4810

簡要說下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...