我已经很久没有使用过 Make 了,我记得有一个技巧可以做到这一点,但我的记忆力不行,而且词汇量太笼统,无法进行搜索……
所以:
SOURCES := $(wildcard */*.org)
JIRAS := $(patsubst %.org,%.jira,$(SOURCES))
.PHONY : all
all : $(JIRAS)
$(JIRAS) : $(SOURCES)
# $< is wrong here, because it will always be the first source
emacs $< --batch -l $(CURDIR)/org2jira -f export-to-jira --kill
正如评论所暗示的,这$<
部分是错误的。我认为有一种方法可以将其拆分为两个规则,然后 Make 会在匹配的文件上成对调用它,但在尝试了一些组合之后,我就是想不起来它是什么。
如果方便的话,所需的代码可以写在 Shell 中:
find . -type f -name '*.org' -exec emacs {} --batch -l $(pwd)/org2jira -f export-to-jira --kill \;
注意:我不关心解决方案是否特定于 GNUMake。
您想使用模式规则。
喜欢: