You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CLion中CMake配置Qt5报错Qt requires C++11 support求助

问题:MSVC2015编译Qt5.15.2提示需要C++11支持

使用CLion搭配CMake构建Qt项目时,已多次调整C++版本配置(包括将CXX_STANDARD从11改为14),编译引入Qt模块的文件时仍抛出如下错误:

msvc2015_64/include/QtCore/qbasicatomic.h:61:4: error: #error "Qt requires C++11 support"
 #  error "Qt requires C++11 support"
    ^

原有CMake配置如下:

cmake_minimum_required(VERSION  3.16.3)
project(Target123)

add_compile_options(-std=c++11)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_PREFIX_PATH "C:/Qt/5.15.2/msvc2015_64/lib/cmake")

find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets)

add_executable(
        Target123
        main.cpp
        startscreen.cpp startscreen.h startscreen.ui)

set_target_properties(Target123
        PROPERTIES
        CXX_STANDARD 11
        CXX_STANDARD_REQUIRED YES
        CXX_EXTENSIONS NO
        )

target_link_libraries (Target123
        Qt5::Core
        Qt5::Gui
        Qt5::Widgets)
根因
  • 配置里的add_compile_options(-std=c++11)是GCC/Clang专属的编译参数,MSVC编译器完全不识别该参数,会直接忽略,不会触发C++11模式开启。
  • MSVC2015默认编译配置没有开启完整C11特性支持,Qt的头文件检测不到对应C版本宏就会抛出该错误。
  • 若CLion配置的工具链和Qt版本不匹配(比如选了MinGW、其他版本VS套件),也会触发该检测失败。
  • 重复设置全局和target级别的C++标准不会提升配置优先级,反而可能因为CMake缓存残留导致配置不生效。
修复步骤
  1. 删除无效配置:去掉add_compile_options(-std=c++11)这行,该配置对MSVC无任何作用。
  2. 校验CLion工具链:打开设置-构建、执行、部署-工具链,确认当前使用的编译套件为Visual Studio 2015 amd64,和安装的msvc2015_64版本Qt完全对应,不能混用其他编译器。
  3. 补充MSVC专属编译参数,在find_package(Qt5 ...)之前添加如下配置,给MSVC指定正确的C++标准开关:
if(MSVC)
    # MSVC2015需要显式指定/std参数开启完整C++11/14支持
    add_compile_options(/std:c++14)
endif()
  1. 清理CMake缓存:删除项目下的cmake-build-*构建目录,或者点击CLion CMake面板的「重置缓存并重新加载项目」,确保旧的错误配置被完全清除。
  2. 重新执行构建即可。

补充说明:不需要重复在全局和target级别设置CXX_STANDARD相关属性,保留全局的set(CMAKE_CXX_STANDARD 11)和set(CMAKE_CXX_STANDARD_REQUIRED ON)两行即可,target下的重复配置可以删掉,不影响最终效果。


内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:36:16