簡體   English   中英

Makefile目標上的多個詞干

[英]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.

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