使用clang时,有没有办法在输出二进制文件中存储编译时标志?
例如在跑完之后:
clang -O3 -c main.c
生成的main.o
文件应该包含-O3
。
gcc has -frecord-gcc-switches
但我无法找到铿锵声的等效词。
答案 0 :(得分:3)
由于ecatmur已在评论中暗示。目前不支持此功能,如错误https://llvm.org/bugs/show_bug.cgi?id=16291中所述。
然而,当该功能不可用时,我建议让你的构建过程使用clang的-D
参数在程序中定义一个宏。例如,假设您从bash脚本调用它(调整为您使用的任何构建工具):
CLANG_ARGS='-O3 -c main.c'
clang $CLANG_ARGS -D CLANG_ARGS="\"${CLANG_ARGS}\""
然后在你的C或C ++程序中添加以下内容:
const char clangArgs[] = CLANG_ARGS;
然后您可以使用调试器或某些调试器进行检索,甚至可以添加一些代码,以便在使用-V
或--version
开关调用时从您的程序中打印它。