Makefile的目標(biāo)

Makefile的目標(biāo)

Makefile為什么需要偽目標(biāo)

這里的目標(biāo)是指makefile文件中的目標(biāo),不是Makefile的歷史使命
Makefile中的目標(biāo)到底是什么呢,make命令是怎么樣理解目標(biāo)呢

1.make將makefile的目標(biāo)認(rèn)為是一個(gè)文件;
2.make解釋器比較目標(biāo)文件和依賴文件的新舊關(guān)系,決定是否執(zhí)行命令

為里理解Makeifle的目標(biāo)來做以下測(cè)試

編寫一個(gè)Makefile
在同一個(gè)目錄下新建一個(gè)test文件
Makefile文件內(nèi)容如下:

test:
    echo test   

此時(shí)執(zhí)行make會(huì)出現(xiàn)什么情況,一定會(huì)有人會(huì)認(rèn)為會(huì)執(zhí)行echo test語句
實(shí)際情況是下面的結(jié)果

string@asus:~/Projects/makefile$ make
make: 'test' is up to date.

為什么是上面的情況呢,別忘了在目錄下新建了一個(gè)test文件,這個(gè)文件是出現(xiàn)這個(gè)情況的罪魁禍?zhǔn)祝驗(yàn)閙ake將目標(biāo)認(rèn)為是一個(gè)文件,所以執(zhí)行make的時(shí)候會(huì)去尋找該文件,如果該文件存在則不會(huì)執(zhí)行相應(yīng)的語句
如果刪除該test文件則會(huì)按照預(yù)期的目標(biāo)執(zhí)行
如果一個(gè)目標(biāo)不去檢測(cè),一定要執(zhí)行該怎么辦,Makefile提供了一個(gè)很好的辦法,在大多數(shù)的Makefile中也有這個(gè)辦法的例子,那就是Makefile的偽目標(biāo)的,將一個(gè)目標(biāo)設(shè)計(jì)偽目標(biāo)的時(shí)候不管如何都會(huì)去執(zhí)行目標(biāo)下的命令
在該例子中添加如下語句則會(huì)按照預(yù)期的結(jié)果執(zhí)行

.PHONY : test

是不是很熟悉,這個(gè)就是在大多數(shù)Makefile中clean的處理方法,這大概就是偽目標(biāo)的由來原因吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 來自陳浩的一片老文,但絕對(duì)營養(yǎng)。 示例工程:3 個(gè)頭文件*.h,和 8 個(gè) C 文件*.c。 初 編譯過程,源文件...
    周筱魯閱讀 4,785評(píng)論 0 17
  • makefile關(guān)系到整個(gè)工程的編譯規(guī)則,一個(gè)工程中的源文件不計(jì)其數(shù),按其類型、功能、模塊分別放在若干的目錄當(dāng)中,...
    Joe_HUST閱讀 1,985評(píng)論 0 3
  • makefile 介紹 make命令執(zhí)行時(shí),需要一個(gè) makefile 文件,以告訴make命令如何去編譯和鏈接程...
    Stan_Z閱讀 1,730評(píng)論 2 15
  • 說到婚姻,每個(gè)人有每個(gè)人的感受和體會(huì)。有人說婚姻是愛情的宮殿,也有人說婚姻是愛情的墳?zāi)?,還有人說婚姻就是搭伙過日子...
    fly心情閱讀 3,965評(píng)論 1 3
  • 2018.8.9 星期四 晴 今天真是起了個(gè)大早趕了個(gè)晚集,早晨早早的去了醫(yī)院排隊(duì)打針,可醫(yī)院一直...
    liuyue的兔子閱讀 223評(píng)論 0 0

友情鏈接更多精彩內(nèi)容