带有“#”的 Clang 诊断标志会导致构建错误

Posted

技术标签:

【中文标题】带有“#”的 Clang 诊断标志会导致构建错误【英文标题】:Clang diagnostic flag with '#' causes a build error 【发布时间】:2021-01-03 15:44:42 【问题描述】:

在我的 cmake 文件中,我需要添加一个包含 # 的 clang 诊断标志,如 diagnostic flags 的 clang 文档中所示。

但是cmake# 解释为备注并失败。

例如:

add_definitions(-W#pragma-messages)

被解释为:

add_definitions(-W

应该如何在 cmake 脚本中使用此标志?

【问题讨论】:

您是否已经尝试将参数括在引号中,即add_definitions("-W#pragma-messages") 有效!我不知道你可以附上选项,而且在编译器选项中包含井号似乎也很尴尬......无论如何,请发表评论作为回复。 【参考方案1】:

在 CMake 中,# 字符之后直到行尾的所有内容都被视为注释。

为了防止您的编译定义和选项出现这种行为,您需要引用整个参数

add_definitions("-W#pragma-messages")

【讨论】:

以上是关于带有“#”的 Clang 诊断标志会导致构建错误的主要内容,如果未能解决你的问题,请参考以下文章

当我使用 CMake 和 ninja 构建时,clang++ 会忽略 -MD 标志

ld:在带有 gcc/clang -static 标志的 OSX 10.6 上找不到 -lcrt0.o 的库

带有 -mavx 标志的链接器错误 GCC7

构建 Angular 项目导致内存不足

LLVM 之 Clang 静态分析器篇:程序缺陷诊断——除零错误

使用带有 Clang 的 Boost 编译 c++ 项目时出现问题