Makefile的伪目标
1、Makefile偽目標(biāo)的格式:
.PHONY : cleanclean:rm xxxx
?
?
?
2、Makefile偽目標(biāo)的作用:
第一種情況:
如果我們需要書寫這樣的一個(gè)規(guī)則:規(guī)則所定義的命令不是去創(chuàng)建目標(biāo)文件,而是通過(guò)make命令行明確指定它來(lái)執(zhí)行一些特點(diǎn)的命令,就像例題中的clean。當(dāng)文件夾中沒(méi)有clean這個(gè)文件的時(shí)候,我們輸入“make clean”能按照初衷執(zhí)行,但是一旦文件夾中出現(xiàn)clean文件,我們?cè)俅屋斎搿癿ake clean”,由于這個(gè)規(guī)則沒(méi)有任何依賴文件,所以目標(biāo)被認(rèn)為是最新的而不去執(zhí)行規(guī)則所定義的命令。所以rm命令不會(huì)被執(zhí)行。為了解決問(wèn)題,我們將目標(biāo)clean定義成偽目標(biāo)。
clean:rm xxxx如果同一個(gè)目錄下有一個(gè)clean文件,那么 ?make clean的動(dòng)作將不會(huì)執(zhí)行rm動(dòng)作;
所以,增加.PHONY偽目標(biāo)的使用的話,就會(huì)忽略目錄下clean這個(gè)文件,直接執(zhí)行rm動(dòng)作;
?
?
第二種情況:
偽目標(biāo)的另一種使用場(chǎng)合時(shí)在make的并行和遞歸執(zhí)行過(guò)程中。
SUBDIRS=foo bar bazSubdirs:for dir in $(SUBDIRS)do$(MAKE) –C $$dirdone?
如果這樣寫,會(huì)出現(xiàn)幾個(gè)問(wèn)題:
1、 當(dāng)子目錄執(zhí)行make出現(xiàn)錯(cuò)誤,make不會(huì)退出;
2、 使用這種shell的循環(huán)方式時(shí),沒(méi)有用到make對(duì)目錄的并行處理功能。
有了偽目標(biāo)就可以解決上面的兩個(gè)問(wèn)題。
SUBDIRS=foo bar baz.PHONY:subdirs $(SUBDIRS)subdirs: $(SUBDIRS)$(SUBDIRS):$(MAKE) –C $@其中subdirs模板表示要編譯多個(gè)子目錄中的工程。
轉(zhuǎn)載于:https://www.cnblogs.com/linhaostudy/p/7200629.html
總結(jié)
以上是生活随笔為你收集整理的Makefile的伪目标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 进击的新版NavMesh系统:看我飞檐走
- 下一篇: Hibernate 一对一关联关系