鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全/ makefile 偽目標(biāo)疑問

makefile 偽目標(biāo)疑問

搜索makefile偽目標(biāo),看到一篇文章,文章鏈接
作者講了偽目標(biāo)的話要這么寫:
.PHONY: clean
clean:
可是在這個(gè)例子中.PHONY:all確寫在了all后面,這個(gè)例子中我們不降all聲明為偽目標(biāo)也沒問題呀?比如我make就默認(rèn)make all,然后prog1 prog2 prog3各自的依賴去執(zhí)行。那么為什么要將all聲明為PHONY,并且在all:prog1 prog2 prog3前后有無關(guān)系?

有沒有相應(yīng)的例子,可以去熟悉與使用make的用法?

#sample Makefile 
all : prog1 prog2 prog3 
.PHONY : all 
prog1 : prog1.o utils.o 
cc -o prog1 prog1.o utils.o 
prog2 : prog2.o 
cc -o prog2 prog2.o 
prog3 : prog3.o sort.o utils.o 
cc -o prog3 prog3.o sort.o utils.o 
回答
編輯回答
我不懂

文章里說了使用 .PHONY 的原因,看這條

避免在我們的Makefile中定義的只執(zhí)行命令的的目標(biāo)(此目標(biāo)的目的為了執(zhí)行執(zhí)行一系列命令,而不需要?jiǎng)?chuàng)建這個(gè)目標(biāo))和工作目錄下的實(shí)際文件出現(xiàn)名字沖突

其實(shí),如果項(xiàng)目工作目錄下沒有與你的目標(biāo)同名的文件時(shí),不使用 .PHONY 指定偽目標(biāo)也是OK的,使用它是為了避免出現(xiàn)同名文件而產(chǎn)生沖突。比如這里的 all,只要項(xiàng)目工作目錄下不包含 all 這個(gè)文件,那么加不加到 .PHONY 中都是沒問題的。

2018年3月14日 19:27