我正在尝试编写条件编译规则。如果源文件包含两个连续的美元符号,我想要执行额外的步骤(下面的latexMathToWeb)。问题是自动变量$<没有被传递给shell(因此grep想要从stdin读取)。到目前为止,这是我的规则:
%.xml : %.q
ifeq ($(shell grep \\$$\\$$ $< ; echo $$?),0)
echo building math containing xml for $*...
quiz2xml $< | latexMathToWeb > $@
else
echo building non math xml for $*...
quiz2xml $< > $@
endif
我目前通过使用一个简单的shell脚本来做出决定并进行构建来解决这个问题,但是如果我可以在makefile中完成所有工作,那就更好了。
答案 0 :(得分:0)
你的背景和时间很混乱。
您正在尝试使用make parse-time构造ifeq
和$(shell)
来执行配方执行时操作。你不能这样做。
使用普通的shell if
语句将整个test / conditional移动到shell。
%.xml : %.q
if grep \\$$\\$$ $<; then \
echo building math containing xml for $*...; \
quiz2xml $< | latexMathToWeb > $@; \
else \
echo building non math xml for $*...; \
quiz2xml $< > $@; \
fi