【问题标题】:Is there a way to store clang compile-time flags in the output binary?有没有办法在输出二进制文件中存储 clang 编译时标志?
【发布时间】:2016-08-02 11:45:27
【问题描述】:

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

例如运行后:

clang -O3 -c main.c

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

gcc has -frecord-gcc-switches 但我无法找到 clang 的等价物。

【问题讨论】:

标签: c++ c gcc clang


【解决方案1】:

正如 ecatmur 已经在 cmets 中暗示的那样。目前不支持此功能,如错误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 开关调用时,您可以使用调试器或类似的工具进行检索,甚至可以添加一些代码从程序中打印出来。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2010-09-16
    • 2012-12-22
    相关资源
    最近更新 更多