有没有办法在输出二进制文件中存储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
开关调用时从程序中打印它。