我有一个 makefile,我想在其中将几个文件压缩在一起,但使用一个子文件夹作为 zip 文件的根目录。目前我正在使用这个:
kountdown.zip: $(SRCS)
cd $(SRCDIR) && zip -r --filesync ../kountdown.zip .
$(SRCS)
是我在 $(SRCDIR)
中的源文件列表。这可行,但我只想将 $(SRCS)
中的文件包含在 zip 文件中,而不是整个目录。问题是 $(SRCS)
中的路径是相对于 makefile 的位置,而不是 $(SRCDIR)
。我可以为相对于 $(SRCDIR)
的路径创建第二个变量,但我想避免重复列表。理想情况下,我想要一种在当前目录中运行 zip 的方法,但使用子目录作为 zip 文件的根目录。但是从我所有的搜索来看,这似乎是不可能的。有任何想法吗?
我正在使用 linux。
最佳答案
这个怎么样:
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))
关于linux - 使用 make 压缩子文件夹中的特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20715476/