2013-06-05 93 views
0

我有許多二進制文件(圖像等)。我需要將它們中的一部分複製到輸出目錄,作爲我的構建過程的一部分。基於文件的Makefile動態規則

需要複製的文件列表基於一些相當複雜的邏輯,它由Python腳本動態生成。

假設我有deps.txt如下:

a.png 
b.gif 
c.mp4 

我怎麼會用一個makefile任何必要的文件複製到輸出目錄?

例如,如果輸出directoryalready包括c.mp4和出的最新的版本的b.gif,運行生成文件將複製a.pngb.gif到輸出目錄(但不c.mp4)。

回答

2

最簡單的方法,如果你使用GNU做,是使用自動生成的包含文件,如:

deps.txt.mk: deps.txt 
     cat $< | while read f; do echo "\$$(OUTPUT_DIR)/$$f: $$f ; cp $$< [email protected]"; done > [email protected] 

-include deps.txt.mk 

如果你不使用GNU做,你就必須改爲使用遞歸:有一個創建makefile的規則(如上所述),然後運行$(MAKE) -f deps.txt.mk實際進行安裝。讓我知道你是否需要這個例子。

+0

謝謝。我要大肆猜測你還寫了http://mad-scientist.net/make/autodep.html。建議閱讀。 –

+1

+1!我可能會建議使用'while ... done <$ <'而不是'cat $ <|而......完成「。 'Cat'是一個外部工具,在這裏並不重要。 – TrueY