我的CMake版本是3.18.0-rc2
。在我的项目的CMakeLists.txt中,我有以下几行代码,它们应该提高警告级别,并将所有警告视为错误:
if(MSVC)
add_compile_options(/W4 /WX)
add_link_options(/W4 /WX)
else()
add_compile_options(-Wall -Wextra -pedantic -Werror -Wl,--fatal-warnings)
endif()
到目前为止,我只能在Windows上进行测试--如果/当我们将来试图在其他平台上编译时,非MSVC选项就在那里。
当我使用CMake生成Visual Studio项目并检查设置时,警告级别被适当地设置为/W4
,但/WX
没有启用-它被设置为/WX-
。
我知道add_compile_options()
有影响,因为如果我将警告级别更改为其他级别(例如/W3
),我会看到这反映在项目设置中。然而,无论我做什么,/WX
似乎都没有得到遵守。有什么方法可以修复这个问题吗?
1条答案
按热度按时间ltqd579y1#
提问者在@Kevin的帮助下在评论中澄清:
在关闭
/WX
的项目之一的依赖项中隐藏了一些东西。当依赖项和其他需要最低CMake版本的CMake 3.24的项目使用the
COMPILE_WARNING_AS_ERROR
target property和/或the corresponding CMake defaulter variable时,可以避免此类问题,theCOMPILE_WARNING_AS_ERROR
target property和/或the corresponding CMake defaulter variable提供了一种跨平台的方式来为目录范围的每个目标和默认值设置此类属性。此外,用户还可以使用
--compile-no-warning-as-error
参数全局禁用COMPILE_WARNING_AS_ERROR
。