seo建設(shè)網(wǎng)站百度seo招聘
文章目錄
- 10. env
- 20. 簡(jiǎn)述
- 百度百科
- 常用的自動(dòng)化變量
- 30. 實(shí)例
- 90. 附件下載
10. env
ubuntu=1804
GNU Make 4.1
20. 簡(jiǎn)述
百度百科
https://baike.baidu.com/item/Makefile/4619787?fr=ge_ala
makefile 文件的格式:
目標(biāo):依賴命令
軟件編譯的流程概述:編譯:編譯源代碼(包括預(yù)編譯等等步驟)鏈接:將編譯后的代碼鏈接到一起
PS:makefile的管理規(guī)則是如果形成目標(biāo)文件的各類依賴中存在更新(修改日期大更新),則根據(jù)依賴關(guān)系編譯/鏈接相關(guān)文件。假設(shè)形成一個(gè)test的可執(zhí)行文件需要main.c的源碼,如果main.c被修改,則日期會(huì)同步更新,那么test會(huì)從編譯源碼開(kāi)始重新執(zhí)行,如果main.c未被修改,則日期并不會(huì)比當(dāng)前test中使用的源碼更新,所以不需要重新生成test。
常用的自動(dòng)化變量
$@ : 目標(biāo)的完整名稱
$< : 第一個(gè)依賴文件
$^ : 所有依賴文件
30. 實(shí)例
# 指定編譯器,c編譯器默認(rèn)為cc
CC := gcc# 通過(guò)源文件的名稱得到所有依賴的文件名稱
src := $(shell ls *.c)
objs := $(patsubst %.c,%.o,$(src))# make會(huì)生成第一個(gè)碰到的target
.PHONY : all
all : test
# 這里為什么不直接使用test:xxx,二需要通過(guò)all轉(zhuǎn)一下?
# 自己試一下就知道了,不轉(zhuǎn)會(huì)導(dǎo)致cmd(即編譯.o)默認(rèn)執(zhí)行,這會(huì)導(dǎo)致反復(fù)生成.o文件# 生成的目標(biāo)問(wèn)價(jià)及其依賴,最終的目標(biāo)需要多種.o依賴。
# $^ 表示所有依賴文件,每個(gè)依賴文件以空格隔開(kāi)
test : $(objs)$(CC) -o $@ $^# 目標(biāo)文件需要的.o文件需要依賴.c文件。
# 由于生成.o文件的命令格式是一樣的,故可以使用如下格式同一執(zhí)行。
%.o : %.c$(CC) -o $@ -c $<# -o 指定生成的文件名,-c 只編譯不連接# $@ 指目標(biāo)文件的名稱,即main.o等# $< 指目標(biāo)文件需要的依賴,即生成mian.o需要的main.c文件.PHONY : clean
clean:rm -f $(objs) test
PS:
- .PHONY:目標(biāo)文件,指的是不生成實(shí)體文件,即“偽目標(biāo)”,新版make中可寫(xiě)可不寫(xiě)
- 上述實(shí)例未體現(xiàn)預(yù)編譯、頭文件等管理
90. 附件下載
https://download.csdn.net/download/yujianliam/88228850