CMake之MSVC警告

禁用或启用警告

set_target_properties(${target_name} PROPERTIES COMPILE_FLAGS "/wd4700")

或者

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4700")

或者

if(MSVC)
  target_compile_options(${TARGET_NAME} PRIVATE /W4 /WX)
else()
  target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -Wpedantic -Werror)
endif()

或者

target_compile_options(${TARGET_NAME} PRIVATE
  $<$<CXX_COMPILER_ID:MSVC>:/W4 /WX>
  $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall -Wextra -Wpedantic -Werror>
)

默认警告级别

CMakeLists.txt中 cmake 的最低版本要求会影响msvc的默认警告级别

在vs2022中 cmake 3.10 默认警告级别为 /W3,而cmake 3.15中默认警告级别为 /W1

也就是说下面两个要求默认警告级别不一致:

# 使用3.10版本时时默认waring level = /W3
cmake_minimum_required(VERSION 3.10)

# 使用3.15版本时时默认waring level = /W1
cmake_minimum_required(VERSION 3.15)

CMake中最低版本要求是有最顶层CMake控制的,也就是说如调用者使用了高版本要求,此时可能会降低低版本要求CMake的警告级别,导致部分警告失效。

参考

https://learn.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level?view=msvc-170

How to set warning level in CMake? - Stack Overflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值