C++ 如何禁用有关特定库的编译器警告?
我正在使用CLion作为我的IDE。我从(boost附带)下载了MinGW,提取、安装并成功地将其连接到CLion。然后我在C++ 如何禁用有关特定库的编译器警告?,c++,boost,compiler-warnings,clion,C++,Boost,Compiler Warnings,Clion,我正在使用CLion作为我的IDE。我从(boost附带)下载了MinGW,提取、安装并成功地将其连接到CLion。然后我在CMakeLists中设置了编译器标志,当我编译我的程序时,我遇到了来自boost库的数百条警告(在本例中是-boost/lexical_cast.hpp) 我真的很想使用这些编译器标志中的大部分(如果不是全部的话),但我也不想boost(它肯定比我自己的任何程序都写得好)产生那么多噪音 是否有任何方法可以禁用特定标题/库(甚至可能是名称空间)中的所有警告?您可以将包含路径
CMakeLists
中设置了编译器标志,当我编译我的程序时,我遇到了来自boost库的数百条警告(在本例中是-boost/lexical_cast.hpp
)
我真的很想使用这些编译器标志中的大部分(如果不是全部的话),但我也不想boost(它肯定比我自己的任何程序都写得好)产生那么多噪音
是否有任何方法可以禁用特定标题/库(甚至可能是
名称空间
)中的所有警告?您可以将包含路径添加为系统
,而不是标准路径:
target_include_directories(target SYSTEM ${Boost_INCLUDE_DIR})
这仅适用于GCC和clang,因为Visual Studio没有系统路径的特定包含标志。不幸的是,这给了我以下CMake错误:
(target\u include\u目录):无法为非此项目生成的目标“system”指定包含目录。
。为了成功地包括boost
现在,我一直在使用:include\u目录(${boost\u include\u DIR})
target
是要添加boost包含路径的目标的名称。错误是不言而喻的。我的坏,工作得很好。非常感谢。我一有空就会接受答案(不必担心;)乐于助人。现代C++中没有“图书馆”这样的东西。现代C++代码是模板密集型的,我用这个术语来表示意图。虽然你的评论在技术上是正确的,但我相信更广泛的背景可能会带来一些有趣的答案。转发几年,我也可以在C++中列出一个模块对实际模块的正确支持。但是,如果没有具有真实概念的干净模板,就不可能有具有良好定义边界的真实模块。模板是一团糟,所有C++都是一团糟。