[英]all target in Makefile
我正在學習使用漂亮的Linux工具:make。 我想了解一下:
讓我們看一個簡單的例子:
JADE = $(shell find pages/*.jade)
HTML = $(JADE:.jade=.html)
all: $(HTML)
%.html: %.jade
jade < $< --path $< > $@
clean:
rm -f $(HTML)
.PHONY: clean
當我運行watch make
,我真的對輸出字符串不太了解:make:與“ all”無關。
問題:
all
目標實際上只是您提供的makefile中的默認目標。 文件中的第一個目標是默認目標,該默認目標是在運行make
未指定目標時構建的。
當make告訴您在構建all
目標時它沒有任何工作時,則意味着所有依賴關系均已先前構建並且是最新的(即自上次構建以來,它們的依賴關系均未更改)。 在您的情況下,這意味着HTML輸出文件比相應的Jade輸入文件新。 因此,無事可做。
watch
實用程序只是反復運行一個命令,以供您觀察其輸出隨時間的變化。 手表將只運行make
每隔多少秒,顯示輸出。 第一次運行時,它將構建所有內容,並且隨后對watch
by make
的所有調用將表明所有內容都是最新的。 因此,在watch
運行make
似乎並沒有什么用,除非您有在任意時間修改文件的操作,並且想要通過重建它們來做出反應,但這似乎是一個人為的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.