如果makefile中的子句产生错误

时间:2012-01-07 12:42:55

标签: makefile

我有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如何改进?

2 个答案:

答案 0 :(得分:4)

make命令中的这种复杂程度是痛苦和痛苦的一种方法。如果你采用巨大的命令串联并将其移动到.sh文件,你会发现你的生活更加愉快。然后测试并调试.sh文件,然后创建一个简单的makefile,它只运行.sh文件。如果其他人小心翼翼地用细齿梳读取你的makefile并找到你的特定问题,那就更有力了。

如果您需要对此进行调试,请复制一份。删除脚本的后半部分。看看它是否有效。如果没有,请继续删除,直到找出问题为止。虽然指出额外空间的答案可能是正确的。

答案 1 :(得分:4)

fi ;\之前的第14行(else)中反斜杠之后,你有一个多余的空格。