clangを使用しているときにコンパイル時のフラグを出力バイナリに格納する方法はありますか?実行した後に例えば出力バイナリにclangのコンパイル時フラグを格納する方法はありますか?
:
clang -O3 -c main.c
どこか-O3
を含まなければならない結果main.o
ファイル。
gcc has -frecord-gcc-switches
しかし、私はclangの同等物を見つけることができません。
clangを使用しているときにコンパイル時のフラグを出力バイナリに格納する方法はありますか?実行した後に例えば出力バイナリにclangのコンパイル時フラグを格納する方法はありますか?
:
clang -O3 -c main.c
どこか-O3
を含まなければならない結果main.o
ファイル。
gcc has -frecord-gcc-switches
しかし、私はclangの同等物を見つけることができません。
ecatmurは既にコメントに含意しています。この機能は現在、バグhttps://llvm.org/bugs/show_bug.cgi?id=16291に記載されているようにサポートされていません。
しかし、機能が利用できないときには、ビルドプロセスでclangの-D
引数を使用してプログラム内でマクロを定義することをお勧めします。
CLANG_ARGS='-O3 -c main.c'
clang $CLANG_ARGS -D CLANG_ARGS="\"${CLANG_ARGS}\""
その後、あなたのCまたはC++プログラムでは、あなたがの線に沿って何かを追加します:
const char clangArgs[] = CLANG_ARGS;
たとえばあなたは(あなたが使用してどのようなビルドツールに調整)bashスクリプトからこれを呼び出していると仮定デバッガなどを使用して取得したり、-V
または--version
スイッチで呼び出されたときにプログラムからコードを出力するコードを追加することもできます。
注:Clang機能要求:https://llvm.org/bugs/show_bug.cgi?id=16291 – ecatmur
ありがとうございました。そのバグに「+1」を追加しました。 – donturner