[英]Makefile Automatic Target Generation
我有以下目錄樹
moving_files/
Makefile
source/
a
b
c
target/
使用我的Makefile,我想將source/
每個文件cp
到target/
。 要點:我希望以后可以將其他文件移至source/
,而無需編輯Makefile。 為此,我寫了這樣的話:
FILES = $(filter-out Makefile, $(wildcard source/*) )
all: $(subst source,target,$(FILES))
$(subst source,target,$(FILES)): $(FILES)
cat $< >| $@
而且效果很好。
但是,當我執行touch source/d
之后,並make
除了再次到d
, a
, b
和c
得到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.