2012-01-07 4 views
2

を生成した場合、私持って、次のMakefileは、メイクファイル内の句はerros

#.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)" ;\ 

メイクdoens't仕事の一部と、私はエラーを見つけることができません。

私の目標は、入力することです:

make test.pdf 

次の例では、テスト(test.tex)のために使用することができます。

\documentclass{article} 
\begin{document} 
Hello World! 
\end{document} 

どのようにMakefileが改善しなければなりませんか?

+1

'make test.pdf 'の入力が完全に機能することを喜んで賭けています。しかし、有益な結果は得られませんが、 'make test.pdf 'とタイプするだけで確実に動作します。したがって、あなたのケースでは「うまくいかない」とは何を意味し、何が「仕事」であるべきかを定義してください。 – thiton

+0

@thiton:それは本当にあなたのために働くのですか? '/ bin/bash:-c:Zeile 14:Syntax Fehler:Unerwartetes Dateiendeというエラーが出ます。make:*** [test.pdf] Fehler 1' Try in English: '/ bin/bash:-c:14行目:構文エラー:予期しないファイルが終了しました。 make:*** [test.pdf] Fehler 1' –

+0

これはエラーメッセージです。次回にあなたの投稿にそれを含めてください。ドイツ語を話さない人には 'LC_ALL = en_US make'を使用してください。 – thiton

答えて

4

elseの直前の14行目(fi ;\)にバックスラッシュの後に余分なスペースがあります。

+0

このようなスペースを許可するトリックはありますか? –

+1

@MarcoDaniel: '\'の前にのみ。不確かな場合は、bmargulies優れたアドバイスに従って、シェルスクリプトを独自のファイルに書き込んでください。 – thiton

4

makeコマンドのこの複雑さは、痛みや苦しみのレシピです。その巨大なコマンドを連結して.shファイルに移動すると、あなたの人生ははるかに楽しいものになります。次に、.shファイルをテストしてデバッグし、.shファイルを実行する単純なmakefileを作成します。他の誰かがあなたのメイクファイルを細かい櫛で読んで、あなたの特定の問題を見つけたら、もっと力を出してください。

これをデバッグする必要がある場合は、コピーを作成してください。スクリプトの後半を削除します。それが動作するかどうかを確認します。そうでない場合は、問題を切り分けるまで削除してください。余分なスペースを指摘した答えはおそらくスポットオンです。

+0

私はあなたの視点を理解しています。 makefileはCTANにアップロードする必要があり、「エンドユーザー」はmake allだけを実行する必要があります。現時点で私はgithub上のcurrecnt Makefileを単純化しようとしています:https://github.com/marcodaniel/mdframed/blob/master/Makefile –

+0

私はこのMakefileに触発されました:https://github.com/uktug/latex -beginners-course/blob/master/Makefile –

+0

この場合、エラーメッセージには何かの「終わり」がないことが示されています。バイナリ検索で減らしてください。 – bmargulies

関連する問題