2014-11-04 171 views
0

我有一個Makefile,其中我目前有兩個文件應該被複制到不同的目錄中。目前,我測試過將多個文件複製到Makefile中的不同目錄中

echo ${dirs} | xargs -n 1 cp ${sources} 

所以,我明白,這是行不通的,因爲它會嘗試到源文件複製到每一次的目錄之一。但有沒有辦法讓我可以對每個源文件和目錄執行copy命令?

最好的問候,

西蒙

+0

'$ {dirs}'和'$ {sources}'是輸入文件和目標目錄的並行列表嗎? – 2014-11-04 23:19:35

+0

這個問題還不清楚。你想將每個文件複製到不同的目錄,或每個文件複製到每個目錄嗎? – Beta 2014-11-05 04:49:16

+0

@EtanReisner我會回答OP::)不一定。讓我們說,他必須知道他想要結束什麼。這意味着,他想要什麼副本在哪裏,可能是一些文件的多個副本,也許沒有其他文件的副本。他知道來源在哪裏。現在他想要一些'Make' magick從後者到前者。 – 2014-11-05 08:22:41

回答

1

我認爲這是可能推斷出你想要的東西從你寫的東西,但也有人指出,你應該是比較清楚的,所以我們不必花時間推斷它。

無論如何,因爲你不想複製所有文件到所有目錄,你必須以某種方式告訴Make你想複製哪些文件。最簡單的方法是在變量中列出所需副本的完整路徑,如$(COPIES),而不僅僅是${dirs}。在這個答案中,我將假設目標目錄已經存在。

.PHONY: all 
all: $(COPIES) 

PERCENT := % 

.SECONDEXPANSION: 
$(COPIES): %: $$(filter $$(PERCENT)/$$(notdir $$*), $(sources)) Makefile 
    cp $< [email protected] 
+0

好吧!實際上,應該在目錄中複製和創建文件。所以可以說我有我想要複製的文件的完整路徑爲tmp/conf/file1.conf,我想將它複製到tmp/conf/prod.conf。在這種情況下,文件_prod.conf_從一開始就不存在,但應在複製文件時創建。 – FluxxSimon 2014-11-05 10:12:55

+0

@FluxxSimon然後接受這個答案,因爲它解決了你所說的問題,包括根據你試圖解決它的效果。然後發佈一個不同的問題,這次精確,我會告訴你如何去做。 – 2014-11-05 19:13:06

相關問題