我已经很久没有使用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 \;
NB。我不在乎解决方案是否特定于GNUMake。