我有Makefile
#.SILENT:
#.PHONY:
SHELL := /bin/bash
################################################################
## Colordefinition
################################################################
NO_COLOR = \x1b[0m
OK_COLOR = \x1b[32;01m
ERROR_COLOR = \x1b[31;01m
%.pdf: %.tex
NAME=`basename $< .tex` ;\
echo -e "\t$(OK_COLOR)Typesetting $$NAME$(NO_COLOR)" ;\
pdflatex -draftmode -interaction=nonstopmode $< > /dev/null ;\
if [ $$? = 0 ] ; then \
echo -e "\t$(OK_COLOR)compilation in draftmode without erros$(NO_COLOR)" ;\
pdflatex -interaction=nonstopmode $< > /dev/null ;\
if [ -e $$NAME.glo ] ; then \
echo -e "$(OK_COLOR)Typesetting $$NAME.glo$(NO_COLOR)" ;\
makeindex -s gglo.ist -o $$NAME.gls $$NAME.glo ;\
fi ;\
if [ -e $$NAME.idx ] ; then \
echo -e "$(OK_COLOR)Typesetting $$NAME.idx$(NO_COLOR)" ;\
makeinde -s gind.ist $$NAME.idx ;\
fi ;\
else \
echo -e "\t$(ERROR_COLOR)compilation in draftmode with erros$(NO_COLOR)" ;\
exit 0;\
fi ;\
echo -e "\t$(OK_COLOR)Typesetting $$NAME finished $(NO_COLOR)" ;\
makefile不起作用,我找不到错误。
我的目标是输入:
make test.pdf
以下示例可用于测试(test.tex):
\documentclass{article}
\begin{document}
Hello World!
\end{document}
Makefile如何改进?
答案 0 :(得分:4)
make命令中的这种复杂程度是痛苦和痛苦的一种方法。如果你采用巨大的命令串联并将其移动到.sh文件,你会发现你的生活更加愉快。然后测试并调试.sh文件,然后创建一个简单的makefile,它只运行.sh文件。如果其他人小心翼翼地用细齿梳读取你的makefile并找到你的特定问题,那就更有力了。
如果您需要对此进行调试,请复制一份。删除脚本的后半部分。看看它是否有效。如果没有,请继续删除,直到找出问题为止。虽然指出额外空间的答案可能是正确的。
答案 1 :(得分:4)
在fi ;\
之前的第14行(else
)中反斜杠之后,你有一个多余的空格。