使用make压缩子文件夹中的特定文件

时间:2013-12-21 04:38:47

标签: linux bash makefile zip

我有一个makefile,我想将几​​个文件压缩在一起,但是使用子文件夹作为zip文件的根目录。目前我正在使用这个:

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

$(SRCS)$(SRCDIR)中我的源文件列表。这有效,但我只想将$(SRCS)中的文件包含在zip文件中,而不是整个目录中。问题是$(SRCS)中的路径是相对于makefile的位置而不是$(SRCDIR)。我可以为相对于$(SRCDIR)的路径创建第二个变量,但我想避免重复列表。理想情况下,我想在当前目录中运行zip,但使用子目录作为zip文件的根目录。但是从我的所有搜索中看起来这是不可能的。有任何想法吗?

我正在使用linux。

1 个答案:

答案 0 :(得分: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))