makefile中偽目標詳解

2021-06-27 19:55:06 字數 841 閱讀 9789

偽目標

下面解釋make是如何工作的:

(1)當遇到目標體clean時,make先檢視其是否有依賴體,因為clean沒有依賴體,所以make認為目標體是最新的而不執行任何操作.為了編譯這個目標體,必須輸入make clean.

(2)輸入make clean,此時假設該目錄下面不存在名為clean的檔案,那麼由於沒有檔案存在,因此make將要呼叫相應的規則"生成"該檔案(這裡只是乙個形象的比喻,實際上只是執行目標clean的相應規則而已,規則中一般是不會執行生成clean檔案的命令),所以使用該偽目標時,可以強制規則的執行。

(3)然而,如果恰巧有乙個名為clean的檔案存在,make就會發現它.然後和前面一樣,因為clean沒有依賴體檔案,make就認為這個檔案是最新的而不會執行相關命令.為了處理這類情況,需要使用特殊的make目標體.phony. .phony的依賴體檔案的含義和通常一樣,但是make不檢查是否存在有檔名和依賴體中的乙個名字相匹配的檔案,而是直接執行與之相關的命令.在使用了.phony之後,前面的例子如下:

howdy: howdy.o helper.o helper.h

gcc howdy.o helper.o -o howdy

helper.o: helper.c helper.h

gcc -c helper.c

howdy.o: howdy.c

gcc -c howdy.c

hello: hello.c

gcc hello.c -o hello

all: howdy hello

.phony : clean

clean:

rm howdy hello *.o 

Makefile中的偽目標

華清遠見嵌入式學院 講師。所謂偽目標就是這樣乙個目標,它不代表乙個真正的檔名,在執行make時可以指定這個目標來執行其所在規則定義的命令,有時我們將乙個偽目標成為標籤。那麼到底什麼是偽目標呢?可能作為初學者還不會在乎這個問題,下面我們來看下我們將在什麼時候需要它。首先來看下面乙個例子 當前目錄下只有...

makefile之偽目標

偽目標的目的不是根據依賴關係生成某個目標,而是為了執行某種任務 clean rm o 通過 make clean來使用目標小結 1.因為我們並不是生成clean這個檔案,因此 偽目標 並不是乙個檔案,只是乙個標籤。2.由於 偽目標 不是檔案,所以 make 無法生成它的依賴關係和決定它是否要執行,因...

makefile學習筆記 書寫規則 偽目標

20180416 makefile學習筆記 書寫規則 偽目標 下面的例子中的乙個 clean 的目標,就是乙個 偽目標 clean rm o temp clean的作用是當我們生成了許多編譯檔案時,我們應該提供乙個清楚他們的 目標 以備完整地重編譯而用 以 make clean 來使用該目標 因為,...