我有一个使用Microsoft Visual Studio 2019构建的CMake项目。我试图修复和删除所有警告,但是有一种类型我无法禁用或修复。
所有类型均为
Command line warning D9025: overriding '/W4' with '/w'
Command line warning D9025: overriding '/W3' with '/W4'
我试图修复它们,但我无法找出导致所有这些问题的原因。
我的问题是:
如何使用CMake禁用警告?还是有一种万无一失的方法来找到它们的根本原因并加以修复?
答案 0 :(得分:3)
即使我使用的是 CMake 3.19,我也遇到了这个问题。这是因为在 project
命令之前有 cmake_minimum_required
命令。
答案 1 :(得分:1)
已经提出了这个问题(here和here),根据您的CMake版本,有几种解决方案。
在使用CMake构建MSVC时,默认情况下会添加编译器警告标志(如/W3
)。在CMake 3.15中,CMake为此引入了fix,并且不再自动添加编译器警告标志,因此该警告不再出现。从文档中:
CMake 3.15及更高版本更喜欢默认情况下从
CMAKE_<LANG>_FLAGS
的值中删除警告标志。
与此修复程序一起,CMake引入了策略CMP0092,该策略可让您在必要时切换回OLD
行为(默认情况下添加警告标志)。
如果您绑定到3.15之前的CMake版本,则可以使用CMake的CMAKE_<LANG>_FLAGS
手动操作regular expressions变量来替换警告。您可以尝试这样的事情:
string(REGEX REPLACE "/W[3|4]" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")