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,...