我有一个makefile,我想将几个文件压缩在一起,但是使用子文件夹作为zip文件的根目录。目前我正在使用这个:
kountdown.zip: $(SRCS)
cd $(SRCDIR) && zip -r --filesync ../kountdown.zip .
$(SRCS)
是$(SRCDIR)
中我的源文件列表。这有效,但我只想将$(SRCS)
中的文件包含在zip文件中,而不是整个目录中。问题是$(SRCS)
中的路径是相对于makefile的位置而不是$(SRCDIR)
。我可以为相对于$(SRCDIR)
的路径创建第二个变量,但我想避免重复列表。理想情况下,我想在当前目录中运行zip,但使用子目录作为zip文件的根目录。但是从我的所有搜索中看起来这是不可能的。有任何想法吗?
我正在使用linux。
答案 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))