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

时间:2016-08-02 11:45:27

标签: c++ c gcc clang

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

例如在跑完之后:

clang -O3 -c main.c

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

gcc has -frecord-gcc-switches但我无法找到铿锵声的等效词。

1 个答案:

答案 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开关调用时从您的程序中打印它。