4

私は主に練習用のWebサーバーを作成していて、makeとmakefileについて学ぶことにしました。私の目的は、Clang / LLVMを使用してソフトウェアをビルドし、診断をテキストファイルに保存して、スクリプトを電子メールアドレスに送信することにより、vpsへのビルドを自動化することです。私が達成できないように見えるのは、診断をファイルに保存することです。

Clangが正常にビルドされ、診断が生成され、makefileが機能しているように見えますが、makefile内とコマンドラインの両方から診断をリダイレクトできませんでした。

私のmakefile(正しく機能していますが、結果を保存する必要性に対応するために少し変更されています):

# Makefile to build Ironman HTTP Server
# We will use the clang frontend from the llvm compiler infrastructure
# for building

# --- targets
Ironman : 
        clang -o Ironman src/Ironman.c > report

# --- remove binary and executable files
clean:
        rm -f Ironman
        rm -f report

私は(私はここでひどく間違っているかもしれませんが)これはclangが実際には診断を返さず、単にそれらを出力するために起こるのではないかと思います。これが当てはまるかどうかはわかりませんが、Clangユーザーガイドにはそのようなことは何も示唆されていません。

[編集]: Clangで少し遊んだところ、コンパイルが成功すると0が返されることがわかりました。テストしたメソッドは次のとおりです。

$ clang <source_file.c>
$ echo $?
0

これは私の理論が正しいかもしれないことを示唆しており、それは物事を複雑にします:-\

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

6

Clangは、他のプログラムと同様に、診断をstderrに出力します。次のように、stderrをstdoutにリダイレクトできます。

Ironman : 
    clang -o Ironman src/Ironman.c > report 2>&1
于 2012-08-21T11:28:40.787 に答える