error C1189: #error : Qt requires a C++11 compiler and yours does not seem to be that.

error C1189: #error : Qt requires a C++11 compiler and yours does not seem to be that 是一个编译错误,指示你正在使用的编译器不支持 C++11 标准,而 Qt 项目需要 C++11 标准的支持。这通常发生在使用较旧版本的编译器时。以下是详细的解决步骤和方法:

1. 确认编译器版本

首先,你需要确认你使用的编译器是否支持 C++11 标准。Qt 项目需要支持 C++11 的编译器,常见的支持 C++11 的编译器版本包括:

  • GCC: 4.8 及以上版本
  • Clang: 3.3 及以上版本
  • MSVC: Visual Studio 2013 及以上版本(MSVC 2012 支持部分 C++11 特性)

在命令行中运行编译器的版本检查命令,例如:

sh
gcc --version

或者

sh
clang --version

2. 升级编译器

如果你发现编译器版本过低,无法支持 C++11,需升级到支持 C++11 的版本。以下是升级编译器的方法:

  • GCC: 通过包管理器(如 apt-getyum)升级到最新版本,或者从 GCC 官网 下载并编译最新版本。

  • Clang: 可以从 LLVM 官网 下载和安装最新版本的 Clang。

  • MSVC: 通过 Visual Studio 官网 下载最新版本的 Visual Studio(2013 或更高版本)。

3. 设置编译器支持 C++11

确保你的项目配置已启用 C++11 支持。具体步骤如下:

对于 GCC/Clang

在项目的编译选项中添加 -std=c++11

sh
g++ -std=c++11 -o myapp main.cpp

如果你使用 CMake 构建系统,可以在 CMakeLists.txt 文件中添加:

cmake
set(CMAKE_CXX_STANDARD 11)

对于 MSVC

确保你使用的是支持 C++11 的 MSVC 版本(Visual Studio 2013 及以上)。在 Visual Studio 中:

  • 打开项目属性。
  • 进入 C/C++ -> 语言 选项。
  • 设置 C++语言标准ISO C++11ISO C++14(如果支持)。

4. 修改 Qt 项目配置

确保你的 Qt 项目配置文件(*.pro 文件)包含了对 C++11 的支持。例如:

pro
CONFIG += c++11

这样可以确保 Qt 在编译时使用 C++11 标准。

5. 清理和重新构建

在做了以上更改后,清理旧的构建文件并重新构建项目,以确保所有配置都已正确应用:

sh
make clean qmake make

总结

error C1189: #error : Qt requires a C++11 compiler and yours does not seem to be that 错误表明你正在使用的编译器不支持 C++11 标准。要解决此问题,你需要确认并升级到支持 C++11 的编译器,确保项目配置中启用了 C++11 标准的支持,并清理旧的构建文件后重新构建项目。

关键字

C1189, C++11, Qt, 编译器, GCC, Clang, MSVC, 编译器升级, CMake, Visual Studio, -std=c++11, CONFIG += c++11