1

これは私のメイクファイルです:

.SILENT:
latexargs = -output-directory=temp -interaction=batchmode -file-line-error-style
thesis: mktemp
    latex $(latexargs) thesis || make errors
    bibtex -terse temp/A || make errors
    bibtex -terse temp/B || make errors
    latex $(latexargs) thesis || make errors
    pdflatex $(latexargs) thesis || make errors
    cat temp/thesis.pdf > thesis.pdf

diff: mktemp
    latex $(latexargs) thesis-diff || make errors
    bibtex temp/A || make errors
    bibtex temp/B || make errors
    latex $(latexargs) thesis-diff || make errors
    pdflatex $(latexargs) thesis-diff || make errors
    rm thesis-diff.tex

clean:
    test -e temp
    rm -f temp/*

mktemp:
    mkdir -p temp

errors:
    grep  ":[^:]*:" temp/thesis.log
    false

コマンドがゼロ以外のコードで終了した場合、何かを実行するより良い方法はありませんか?

マニュアルを見ましたが、その目的のための特別なターゲットは見つかりませんでした。

4

1 に答える 1

2

レシピのすべてのエラーが特定のアクションをトリガーするようにフラグを設定する方法はわかりませんが、これはあなたが持っているものより少しきれいです:

reportError = (grep  ":[^:]*:" temp/thesis.log && false)

thesis: mktemp
    latex $(latexargs) thesis || $(reportError)
    bibtex -terse temp/A || $(reportError)
    ...
于 2012-05-17T17:01:41.660 に答える