21 makefile常用語法講解 1

2021-09-08 15:35:02 字數 3291 閱讀 8112

1、

make

是乙個解釋

makefile

中指令的命令工具。

make

工具最主要也是最基本的功能就是通過

makefile

檔案來描述源程式之間的相互關係並自動維護編譯工作。而

makefile

檔案需要按照某種語法進行編寫,檔案中需要說明如何編譯各個原始檔並連線生成可執行檔案,並要求定義原始檔之間的依賴關係。

makefile 裡主要包含了五種型別的語句

/行:顯式規則、隱式規則、變數定義、檔案指示和注釋。

make命令格式:

make [-f makefile] [option] [target]

2、編譯和鏈結規則

1)如果這個工程沒有編譯過,那麼我們的所有

c檔案都要編譯並被鏈結。

2)如果這個工程的某幾個

c檔案被修改,那麼我們只編譯被修改的

c檔案,並鏈結目標程式。

3)如果這個工程的標頭檔案被改變了,那麼我們需要編譯引用了這幾個標頭檔案的

c檔案,並鏈結目標程式。

3、makefile

的構成(

1)需要由

make

工具建立的目標體(

target

),通常是目標檔案

或可執行檔案。(

2)要建立的目標體所依賴的檔案(

dependency_file)。(

3)建立每個目標體時需要執行的命令(

command

)。格式如下:

target:

dependency_files

command

在這裡面,變數一般都是字串,他有點像

c語言的巨集。

makefile中的檔案指示,包含

3部分,乙個是在乙個

makefie

中引用另乙個

makefile

,就像c

語言的include

一樣;另乙個是根據某些情況指定

makefile

中的有效部分,就像

c語言中的預編譯

#if一樣;還有就是定義乙個多行的命令。

注釋:注釋符用

"#",可以用反斜框進行轉義,如輸入注釋,「

\#」。

4、makefile

的書寫1)所有檔案都在乙個目錄中

示例st_work : main.o  st_work.o  fun.o

gcc  main.o  st_work.o  fun.o  -o  st_work main (命令以

tab開頭)

st_work.o : st_work.c

gcc  -c st_work.c  -o st_work

main.o : main.c  st_work.h

gcc -c main.c -o  main.o

fun.o : fun.c fun.h

gcc -c  fun.c -o fun.o

clean:

rm -f st_work *.o

2)多目錄的寫法

我們這裡,在工作目錄下有

4個資料夾  分別是

sources

(原始檔)

obj

(中間檔案)

headers

(標頭檔案)

bin(目標檔案)

sources裡面有

main.c  st_work.c fun.c

obj 裡面最初沒有檔案

headers 裡面有

fun.h st_work.h

最終目標取名為

st_work

,它應存放到

bin裡面

預備知識:

gcc 的

3個引數:

1. -o 指定目標檔案

gcc sources/main.c -o bin/main

2. -c 編譯的時候只生產目標檔案不鏈結

gcc -c sources/main.c -o obj/main.o

3. -i 主要指定標頭檔案的搜尋路徑

gcc -i headers -c main.c -o main.o

4. -l 指定靜態庫

gcc -lpthread ...

示例bin/st_work : obj/main.o  obj/st_work.o  obj/fun.o  

gcc  obj/main.o obj/st_work.o  obj/fun.o  -o bin/st_work  (命令以

tab開頭)

obj/st_work.o : sources/st_work.c

gcc  -i  headers -c

sources/st_work.c  -o  obj/st_work.o

obj/main.o : sources/main.c

gcc  -i  headers -c

sources/main.c    -o  obj/main.o

obj/fun.o  : sources/fun.c

gcc  -i  headers -c

sources/fun.c

-o  obj/fun.o

clean:

rm -f bin/st_work obj/*.o

3)隱式規則的引入

3個預定義變數介紹:

1.  $@     表示要生成的目標

2.  $^     表示全部的依賴檔案

3.  $<     表示第乙個依賴檔案

bin/st_work : obj/main.o  obj/st_work.o  obj/fun.o  

gcc  $^  -o $@  (命令一定要用以

tab開頭)

obj/st_work.o : sources/st_work.c

gcc  -i  headers   -c

$<

-o  $@

obj/main.o :

sources/main.c

gcc  -i  headers   -c

$<

-o  $@

obj/fun.o  :

sources/fun.c

gcc  -i  headers   -c

$<

-o  $@

clean:

rm -f bin/st_work obj/*.o

makefile常用語法講解一

1 make 是乙個解釋 makefile 中指令的命令工具。make 工具最主要也是最基本的功能就是通過 makefile 檔案來描述源程式之間的相互關係並自動維護編譯工作。而 makefile 檔案需要按照某種語法進行編寫,檔案中需要說明如何編譯各個原始檔並連線生成可執行檔案,並要求定義原始檔之...

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...

Makefile的常用語法 及 規則

1 wildcard 擴充套件萬用字元 2 notdir 去除路徑 3 patsubst 替換萬用字元 4 條件表示式的語法 例子 建立乙個測試目錄,在測試目錄下建立乙個名為sub的子目錄 mkdir test cd test mkdir sub 在test下,建立a.c和b.c 在sub目錄下,建...