4 回答

TA貢獻1805條經(jīng)驗 獲得超9個贊
1.Makefile 基本結(jié)構(gòu)
Makefile 是 Make 讀入的惟一配置文件,因此本節(jié)的內(nèi)容實際就是講述 Makefile 的編寫規(guī)則。在一個 Makefile 中通常包含如下內(nèi)容:
1)需要由 make 工具創(chuàng)建的目標(biāo)體(target),通常是目標(biāo)文件或可執(zhí)行文件;
2)要創(chuàng)建的目標(biāo)體所依賴的文件(dependency_file);
3)創(chuàng)建每個目標(biāo)體時需要運行的命令(command)。
它的格式為:
target: dependency_files
command
注意:在 Makefile 中的每一個 command 前必須有“Tab”符,否則在運行 make 命令時會出錯。
例如,有兩個文件分別為 hello.c 和 hello.h,創(chuàng)建的目標(biāo)體為 hello.o,執(zhí)行的命令為 gcc。編譯指令:gcc –c hello.c,那么,對應(yīng)的 Makefile 就可以寫為:
#The simplest example
hello.o: hello.c hello.h
gcc –c hello.c –o hello.o
接著就可以使用 make了。使用make 的格式為:make target,這樣 make 就會自動讀入Makefile(也可以是首字母小寫 makefile)并執(zhí)行對應(yīng) target 的 command 語句,并會找到相應(yīng)的依賴文件。如下所示:
[root@localhost makefile]# make hello.o
gcc –c hello.c –o hello.o
[root@localhost makefile]# ls
hello.c hello.h hello.o Makefile
可以看到,Makefile 執(zhí)行了“hello.o”對應(yīng)的命令語

TA貢獻1854條經(jīng)驗 獲得超8個贊
MakeFile中的變量定義 一般在我們書寫Makefile時,各部分變量引用的格式我們建議如下: 1. make變量(Makefile中定義的或者是make的環(huán)境變量)的引用使用“$(VAR)”格式。 2. 出現(xiàn)在規(guī)則命令行中shell變量(一般為執(zhí)行命令過程中的臨時變量,它不屬于Makefile變量,而是一個shell變量)引用使用shell的“$tmp”格式。 3. 對出現(xiàn)在命令行中的make變量我們同樣使用“$(CMDVAR)” 格式來引用。 MakeFile中給變量賦值有以下兩種方式 1.遞歸展開式,使用=直接定義,例子如下: foo = $(bar) bar = $(ugh) ugh = Huh? all:;echo $(foo) 執(zhí)行“make”將會打印出“Huh?”。整個變量的替換過程時這樣的:首先“$(foo)”被替換為“$(bar)”,接下來 “$(bar)”被替換為“$(ugh)”,最后“$(ugh)”被替換為“Hug?”。整個替換的過程是在執(zhí)行“echo $(foo)”是進行的。 這種方式的缺點是 缺點1:使用此風(fēng)格的變量定義,可能會由于出現(xiàn)變量遞歸定義而導(dǎo)致make陷入到無限的變量展開過程中,最終使make執(zhí)行失敗.
- 4 回答
- 0 關(guān)注
- 899 瀏覽
添加回答
舉報