簡體   English   中英

Makefile自動目標生成

[英]Makefile Automatic Target Generation

我有以下目錄樹

moving_files/
        Makefile
        source/
                a
                b
                c
        target/

使用我的Makefile,我想將source/每個文件cptarget/ 要點:我希望以后可以將其他文件移至source/ ,而無需編輯Makefile。 為此,我寫了這樣的話:

FILES = $(filter-out Makefile, $(wildcard source/*) ) 
all: $(subst source,target,$(FILES))
$(subst source,target,$(FILES)): $(FILES)
    cat $< >| $@

而且效果很好。

但是,當我執行touch source/d之后,並make除了再次到dabc得到cat版,以及。 我必須做什么才能改變這種行為。

$(subst source,target,$(FILES)): $(FILES)

擴展到

target/a target/b target/c: source/a source/b source/c

這意味着每個目標都取決於source所有文件,可能不是您想要的。 靜態規則或隱式規則都可以解決此問題,因為靜態規則更具體,所以通常會更好:

$(subst source,target,$(FILES)): target/%: source/%

暫無
暫無

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

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