2013-12-21 76 views
0

我有一個makefile,我想將多個文件壓縮在一起,但使用子文件夾作爲zip文件的根目錄。目前我使用此:使用子文件夾壓縮特定文件使

kountdown.zip: $(SRCS) 
    cd $(SRCDIR) && zip -r --filesync ../kountdown.zip . 

$(SRCS)是我的源文件$(SRCDIR)列表。這是有效的,但我只想將zip文件中的文件包含在$(SRCS)中,而不是整個目錄。問題是$(SRCS)中的路徑與makefile的位置相關,而不是$(SRCDIR)。我可以爲相對於$(SRCDIR)的路徑創建第二個變量,但我想避免重複列表。理想情況下,我想要一種在當前目錄中運行zip的方式,但使用一個子目錄作爲zip文件的根目錄。但從我所有的搜索看來,這似乎是不可能的。有任何想法嗎?

我正在使用linux。

回答

1

如何:

kountdown.zip: $(SRCS) 
    cd $(SRCDIR) && zip -r --filesync ../kountdown.zip $(subst $(SRCDIR)/,,$(SRCS)) 

,它假定$(SRCDIR)還沒有在它/。如果是這樣,請從上面的subst聲明中刪除它。

這也應該工作:

kountdown.zip: $(SRCS) 
    cd $(SRCDIR) && zip -r --filesync ../kountdown.zip $(patsubst $(SRCDIR)/%,%,$(SRCS)) 
相關問題