visual-c++ - Visual Studio 中的 CMake 项目给出标志覆盖警告(命令行警告 D9025:用 '/w' 覆盖 '/W4')
问题描述
我有一个 CMake 项目,我正在使用 Microsoft Visual Studio 2019 构建它。我正在尝试修复并删除所有警告,但有一种类型我无法禁用或修复。
它们都属于以下类型:
Command line warning D9025: overriding '/W4' with '/w'
Command line warning D9025: overriding '/W3' with '/W4'
我尝试修复它们,但我无法找出导致所有这些问题的原因。
我的问题是:
如何使用 CMake 禁用警告?还是有一种万无一失的方法可以找到它们的根本原因并解决它们?
解决方案
此问题已被提出(此处和此处),根据您的 CMake 版本,有几个解决方案。
使用 CMake 为 MSVC 构建时,/W3
默认情况下会添加编译器警告标志(如 )。在 CMake 3.15 中,CMake 对此进行了修复,并且不再自动添加编译器警告标志,因此不再出现警告。从文档:
默认情况下,CMake 3.15 及更高版本更喜欢从值中省略警告标志
CMAKE_<LANG>_FLAGS
。
随着这个修复,CMake 引入了策略CMP0092,它允许您在必要时切换回OLD
行为(默认添加警告标志)。
如果您绑定到早于 3.15 的 CMake 版本,则可以手动操作变量以使用 CMake 的正则表达式CMAKE_<LANG>_FLAGS
自己替换警告。你可以尝试这样的事情:
string(REGEX REPLACE "/W[3|4]" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
推荐阅读
- wpf - Microsoft.Win32.SystemEvents 事件不适用于 WeakEventManager
- javascript - d3.js 在两种十六进制颜色之间进行插值
- robotframework - 如何在表格列上循环?
- c# - 在首次加载之前通过授权服务器保护 SPA
- wordpress - AWS 上的 Wordpress 多站点服务器水平扩展
- php - 如何使用 PHP 运行 python 脚本并创建文件?
- erlang - 使用 Common Test 测试 gen_server 模块
- google-maps - google maps API geocoding 获取地址组件
- python - 如何使用 Pandas 处理来自 CSV 的不规则格式
- mapbox - mapbox setPaintProperty 方法是否处理表达式?