[英]Multiple stems on makefile target
假設ls
產生abcd
,我想創建文件ab bd cb
等。要創建ab
,我將使用諸如cat ab > ab
類的命令,對其他命令也是如此。 我想使用一個makefile
,但不知道怎么做。 我需要一些東西,例如:
FILES := a-b b-d c-b
$(FILES): %1-%2: %1 %2
cat $^ > $@
在某些正則表達式中, %1
和%2
類似於\\1
和\\2
。 有沒有簡單的方法可以做到這一點? 我找到了這個答案,但對我來說,對於這樣一個簡單的任務來說,它似乎太復雜又丑陋。 不過,也許我問得太多了。
類似於這個問題 ,“您基本上有兩個選擇:可以使用自動生成的生成文件,也可以使用$(eval ...)。”,這是使用自動生成方法的解決方案,
FILE =a-b b-c c-d
all: $(FILE)
-include generated.mk
generated.mk: Makefile
@for f in $(FILE); do \
echo $$f: `echo $$f | sed 's/-/ /'`; \
echo '\t'"@cat $$^ > $$"@; \
echo ;\
done > $@
以下內容似乎可以輕松解決您的要求。
FILES := a-b b-d c-b
$(foreach y,$(FILES),$(eval $y: $(subst -, ,$y)))
$(FILES): %:
cat $^ >$@
我打破了依賴關系以簡化此過程,但我想如果您真的想要,您可以完全得到您所要求的,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.