工程管理器make

2021-10-04 01:33:53 字數 2645 閱讀 8830

1.工程管理器:編譯很多檔案,(型別不同,存放在不同目錄,資源檔案使用)組成的軟體**結構

2.make讀取makefile裡的內容,實現自動編譯

「自動編譯」

(a)根據makefile檔案的內容進行自動編譯

(b)根據檔案的時間戳來判斷檔案是否需要編譯

3.makefile是個指令碼檔案(批處理)

目標:依賴

按下tab鍵 命令

解釋:執行命令依賴這個檔案,最終生成目標

makefile執行順序:自上向下,當你的目標依賴的檔案又是乙個目標時,會先跳轉到該目標去執行相關命令

make+目標名 :從該目標開始自上向下執行

4.偽目標:只執行命令,不生成對應的檔案

.phony:clean install

5.在命令前面加@可以避免命令回顯

echo 在終端上輸出字串

例如@echo make hello.c done

內建變數**$@**可以替代目標

**「#」**注釋

定義變數

(1)總控makefile:進入各個功能目錄(功能目錄管理軟體**),執行make命令,並將所有.o檔案鏈結成可執行檔案

(2)功能目錄makefile:將功能目錄下的原始檔編譯生成目標檔案

(3)scripts目錄標頭檔案makefile:定義變數,供其他makefile使用

(1)scripts目錄標頭檔案makefile裡的內容如下

=$(wildcard src/*.c #列出當前目錄下src目錄的所有.c檔案

objs := $(patsubst %.c,%,o,$(source)) #將source裡的.檔案編譯成.o檔案

modules += check_putin pack_message main #當前軟體**所有的功能目錄

a11objs :=$(addsuffix /src/*.o,$(modules)) #allobjs:列出所有功能目錄下的src目錄下的.o檔案

 wildcard格式:$(wildcard模式引數)

功能:列出當前目錄下所有符合模式引數的檔名

返回值:當前目錄下所有符合模式引數的檔名

例如:result := $(wildcard *.c)

result的值為當前目錄下所有的c檔名。

ccsource :

=$(wildcard src/*.c)

//這裡ccsource返回的就是src目錄下所有.c的檔案

 patsubst格式:$(patsubset模式引數,引數1,引數2)

功能:把引數2中符合模式引數的單詞(單詞是指引數中被空格隔開的字串)替換成引數1

返回值:被替換後的引數2

objs :

= $(patsubst %

.c,%

,o,$(source)

)//把source這個檔案裡符合.c的檔案全部替換成。o檔案

 addsuffix格式:$(addsuffix 引數1,引數2)

功能:在引數2中的每個單詞加上字尾引數1

返回值:加上字尾的所有單詞

a11objs :

=$(addsuffix /src/*.o,$(modules))

//

(2)總控makefile**如下

;//進入$(1)所在的目錄執行make命令

定義了四個偽目標

(3)功能目錄下的makefile**如下

如果我們想要用上述結構編寫makefile

首先建立功能目錄例如 mkdir -p add/src main/srcscripts

然後將對應的.c檔案拷到對應的功能目錄下

然後剪下makefie模板

修改scripts下面的makefile,將target以及modules進行修改

工程管理器make

工程管理器make 命令tree 樹狀顯示目錄下的檔案 make命令 通過批處理來實現自動編譯 要想使用make必須要有 makefile 檔案 makefile三元素 目標 依賴命令 執行此命令,依賴該檔案來實現該目標 僅編譯hello.c的 makefile 檔案示例 hello hello.o...

make工程管理器

今天首先編寫了一道程式,有n個人圍成一圈,順序排號,從第乙個人開始報數 從1報到 3 凡報到 3的人退出圈子,問最後留下的是原來第幾號的那位。通過這道程式設計,對 c語言有了更深刻的理解。隨後又學習了 make 工程管理器的一些知識。首先是建立功能目錄 mkdir p add src mv add....

make工程管理器

工程管理器 make可以管理較多的檔案,自動編譯管理器 當然這裡也可以gcc add.c sub.c mul.c div.c main.c o main實現多檔案編譯過程 這裡主要介紹工程管理器make及makefile的使用 makefile是make讀入的唯一配置檔案,如果沒有makefile,...