簡體   English   中英

所有目標都在Makefile中

[英]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”無關。

問題:

  1. 全部動作有什么作用?
  2. 使用手表工具,所有動作都起作用嗎?

all目標實際上只是您提供的makefile中的默認目標。 文件中的第一個目標是默認目標,該默認目標是在運行make未指定目標時構建的。

當make告訴您在構建all目標時它沒有任何工作時,則意味着所有依賴關系均已先前構建並且是最新的(即自上次構建以來,它們的依賴關系均未更改)。 在您的情況下,這意味着HTML輸出文件比相應的Jade輸入文件新。 因此,無事可做。

watch實用程序只是反復運行一個命令,以供您觀察其輸出隨時間的變化。 手表將只運行make每隔多少秒,顯示輸出。 第一次運行時,它將構建所有內容,並且隨后對watch by make的所有調用將表明所有內容都是最新的。 因此,在watch運行make似乎並沒有什么用,除非您有在任意時間修改文件的操作,並且想要通過重建它們來做出反應,但這似乎是一個人為的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM