【Makefile由浅入深完全学习记录3】伪目标的引入
只有不停的努力,才能看起來(lái)很輕松!!!加qq1126137994共同學(xué)習(xí)探討更多技術(shù)!!!
1、思考:
makefile中的目標(biāo)究竟是什么?
在默認(rèn)的情況下:
但是當(dāng)我們的目標(biāo)不是一個(gè)文件,語(yǔ)法上要有什么變化呢?
例如下圖:
當(dāng)執(zhí)行:make clean 時(shí),我們是希望執(zhí)行rm *.o hello.out的命令的。、
如果文件中沒(méi)有命名為clean的,上述執(zhí)行可以正常進(jìn)行,但是如果當(dāng)文件中存在文件名為clean時(shí),我們執(zhí)行make clean命令,make程序就會(huì)把clean當(dāng)成是那個(gè)文件來(lái)處理,而不會(huì)按上述所說(shuō)的執(zhí)行!
解決辦法:
引入偽目標(biāo)
- 通過(guò).PHONY關(guān)鍵字聲明偽目標(biāo)
- 偽目標(biāo)不對(duì)應(yīng)任何實(shí)際的文件
- 偽目標(biāo)的命令總是執(zhí)行,不管偽目標(biāo)的依賴是否有更新都要總是執(zhí)行!!!
偽目標(biāo)的語(yǔ)法:先聲明,后使用!!!
本質(zhì):偽目標(biāo)是make程序中特殊目標(biāo).PHONY的依賴
下面給出一個(gè)例子來(lái)看看偽目標(biāo)的使用(所依賴的文件func.c與main.c是上一篇文章里的點(diǎn)擊鏈接查看:點(diǎn)擊查看):
hello.out all : func.o main.ogcc -o hello.out func.o main.ofunc.o : func.cgcc -o func.o -c func.cmain.o : main.cgcc -o main.o -c main.c.PHONY : cleanclean:rm *.o hello.out輸入make的運(yùn)行結(jié)果為:
輸入make clean的運(yùn)行結(jié)果為:
2、偽目標(biāo)的妙用(函數(shù)調(diào)用)
偽目標(biāo)的調(diào)用:規(guī)則調(diào)用(函數(shù)調(diào)用)
hello.out : func.o main.ogcc -o hello.out func.o main.ofunc.o : func.cgcc -o func.o -c func.cmain.o : main.cgcc -o main.o -c main.c.PHONY : rebuild clean all ##原理:當(dāng)一個(gè)目標(biāo)的依賴包含偽目標(biāo)時(shí),偽目標(biāo)所定義的命令總是被執(zhí)行rebuild : clean all ##模擬函數(shù)的調(diào)用all : hello.outclean :rm *.o hello.out注意:如果我們使用的是GNU的make,用.PHONY聲明偽目標(biāo)沒(méi)有任何問(wèn)題,但是如果我們不是用的GNU的make,有可能其他的make程序不支持,PHONY聲明偽目標(biāo),這個(gè)時(shí)候,我們就需要避開(kāi).PHONY,用其他方法聲明偽目標(biāo)!!!
可以像如下圖一樣定義偽目標(biāo)clean:
原理:如果一個(gè)目標(biāo)沒(méi)有命令或者依賴,并且它不是一個(gè)已經(jīng)存在的文件名,在執(zhí)行此規(guī)則時(shí),目標(biāo)總會(huì)認(rèn)為是最新的!!!
例子:
運(yùn)行結(jié)果與上述的運(yùn)行結(jié)果一致!!!
3、總結(jié):
想一起探討以及獲得各種學(xué)習(xí)資源加我(有我博客中寫的代碼的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流關(guān)于嵌入式,操作系統(tǒng),C++語(yǔ)言,C語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)等技術(shù)問(wèn)題。
本學(xué)習(xí)記錄完全來(lái)源于狄泰軟件學(xué)院的相關(guān)課程,可以加我q:1126137994或者Q群:199546072 ,給你推薦更多學(xué)習(xí)課程。
總結(jié)
以上是生活随笔為你收集整理的【Makefile由浅入深完全学习记录3】伪目标的引入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 办公计算机配件,办公电脑加装傲腾如丝般顺
- 下一篇: GMSSL