有没有办法在输出二进制文件中存储clang编译时标志?

有没有办法在使用clang时将编译时标志存储在输出二进制文件中?

比如跑完后:

clang -O3 -c main.c

生成的main.o文件应该包含-O3

gcc有-frecord-gcc-switches但是我找不到clang的等价物。

正如ecatmur已经在评论中暗示的那样。 目前不支持此function,如https://llvm.org/bugs/show_bug.cgi?id=16291中所述 。

但是,当function不可用时,我建议让你的构建过程使用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开关调用时从程序中打印它。