如何在Visual Studio 2019中启用CXX23语言标准及解决CMake编译报错
解决CMake在Visual Studio中无法识别CXX23编译标志的问题
核心原因
MSVC 2019本身对C++23的支持是部分且需要手动开启特定编译器选项的,CMake旧版本可能没适配MSVC 2019的CXX23启用方式,而QtDesigner应该是直接调用了编译器原生选项才正常编译。
可行解决方案
方案1:在CMakeLists.txt中手动指定编译器选项
跳过CMake的标准检测逻辑,直接给MSVC添加C++23相关编译标志:
if(MSVC) # 启用C++23并允许编译器扩展 target_compile_options(你的项目目标名 PRIVATE "/std:c++latest" "/permissive-") # 若需严格遵循标准(不启用扩展),可将"/std:c++latest"替换为"/std:c++23" endif()
如果要给所有项目目标全局设置,把target_compile_options替换为:
if(MSVC) add_compile_options("/std:c++latest" "/permissive-") endif()
方案2:升级CMake版本
CMake 3.20及以上版本开始正式支持MSVC的CXX23标准标识,若当前CMake版本低于3.20,升级后可直接在CMakeLists.txt中配置:
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON) # 对应报错中启用编译器扩展的需求
方案3:在Visual Studio中手动调整项目属性
- 右键项目选择「属性」打开属性面板
- 依次进入配置属性→C/C++→语言
- 将「C++语言标准」设置为
ISO C++23 标准(/std:c++23)或预览 - 最新的 C++ 工作草案(/std:c++latest) - 确保「允许编译器扩展」选项设置为
是(/permissive-)(匹配报错里的需求)
额外说明
MSVC 2019对C23的支持并不完全,部分新特性可能无法正常使用。如果项目依赖完整的C23特性,建议升级到Visual Studio 2022,它对C++23的支持更全面。
内容的提问来源于stack exchange,提问作者Kemuel Sanchez
相关产品推荐
相关产品推荐

