makefile之偽目標

2021-10-06 08:44:14 字數 1377 閱讀 9085

偽目標的目的不是根據依賴關係生成某個目標,而是為了執行某種任務

clean:

rm*.o

#通過 make clean來使用目標

小結:

1.因為我們並不是生成clean這個檔案,因此"偽目標"並不是乙個檔案,只是乙個標籤。

2.由於「偽目標」不是檔案,所以 make 無法生成它的依賴關係和決定它是否要執行,因此在使用時是通過 「make clean」 這樣顯示指明目標來使用執行的

1."偽目標"的取名不能和檔名重名,不然其就失去了「偽目標」的意義了

2.為避免和檔案重名的這種情況,可以使用特殊的標記「.phony」來顯示地指明乙個目標是「偽目標」

.phony: clean 

clean:

rm*.o

偽目標一般沒有依賴的檔案。但也可以為偽目標指定所依賴的檔案

.phony: cleanall cleanobj cleandiff 

cleanall : cleanobj cleandiff

rm*.diff

cleanobj :

rm*.o cleantmp :

rm*.tmp

"cleanobj"和"cleandiff"這兩個偽目標有點像「子程式」的意思

輸入"make cleanall"清除所有要被清除的檔案

輸入"make cleanobj"和"make cleandiff"命令來達到清除不同種類檔案的目的

將偽目標放在第乙個目標位置

由於偽目標的特性是,總是被執行的,所以其依賴的那三個目標就總是不如「all」這個目標新,所以依賴目標總被執行。

all:program1 program2 program3 

.phony:all

program1:prog1.o utils.o

cc -o program1 program1.o utils.o

program2: program2.o

cc -o program2 program2.o

program3: program3.o utils.o

cc -o program3 program3.o utils.o

這樣可以達到一次生成多個目標的目的

此文僅用於個人學習總結,請各位大牛多多指導

Makefile中的偽目標

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

makefile中偽目標詳解

偽目標 下面解釋make是如何工作的 1 當遇到目標體clean時,make先檢視其是否有依賴體,因為clean沒有依賴體,所以make認為目標體是最新的而不執行任何操作.為了編譯這個目標體,必須輸入make clean.2 輸入make clean,此時假設該目錄下面不存在名為clean的檔案,那...

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

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