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目錄下,建...