【问题标题】:Qt requires C++11 supportQt 需要 C++11 支持
【发布时间】:2017-01-13 01:58:54
【问题描述】:

我使用了 Qt 5.7 和 gcc 4.9.2。 Qt Core 模块抛出Qt requires C++11 support 错误。

This page 这么说

gcc 4.9.2 无法编译 Qt。

所以我安装了 gcc 4.8。我在终端上使用以下命令进行检查:

$ g++ --version
g++ (Ubuntu 4.8.4-1ubuntu15) 4.8.4

我的工具包使用 cmake 而不是 qmake。我将TARGET_LINK_LIBRARIES ( xxxx yyyy /usr/bin/c++ -std=c++11 添加到 CMakeLists-txt。

我重新启动我的电脑并再次运行我的应用程序。抛出同样的错误。

/opt/Qt/5.7/gcc_64/include/QtCore/qbasicatomic.h:61: error: #error "Qt requires C++11 support"
 #  error "Qt requires C++11 support"
    ^

我该如何解决?

【问题讨论】:

  • 您是否尝试过使用 C++11(例如编译器标志)?
  • @ray 我将 TARGET_LINK_LIBRARIES ( xxxx yyyy /usr/bin/c++ -std=c++11 添加到 CMakeLists.txt 文件中
  • 啊,对不起,我第一眼看帖子时一定错过了这个部分。
  • TARGET_LINK_LIBRARIES 似乎只与链接阶段有关。 -std=c++11 也必须添加到编译器选项中。您可能会在那里找到答案:stackoverflow.com/q/10851247/894321
  • 使用 CXX_STANDARDCXX_STANDARD_REQUIRED CMake 变量 (cmake.org/cmake/help/v3.1/prop_tgt/CXX_STANDARD.html)。如果不同的库需要不同的标准,手动添加 -std 选项通常会破坏您的 CMake 构建。

标签: qt c++11 gcc compiler-errors


【解决方案1】:

已经有一段时间了。 我最终如何解决它是在 CMakeLists.txt 中指出 project(MyProject):

之后的以下行
add_compile_options(-std=c++11)

这对 cmake 说,创建一个 Makefile 将使用 c++11 解决问题。

【讨论】:

    【解决方案2】:

    如果使用 QtCreator,您可以将其添加到您的 .pro 文件中:

    CONFIG += c++11
    

    https://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects

    【讨论】:

      【解决方案3】:

      我的解决方案是(在您的 .pro 文件中):

      QMAKE_CXXFLAGS += -stdlib=libc++
      QMAKE_CXXFLAGS += -std=c++11
      QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
      QMAKE_LFLAGS += -mmacosx-version-min=10.7
      

      【讨论】:

        【解决方案4】:

        显式开启 c++11:

        1. set(CMAKE_CXX_FLAGS "-std=c++11" CACHE STRING "compile flags" FORCE)project(...) 声明之后。
        2. add_library(MyLib SHARED ${PROJECT_HEADERS} ${PROJECT_SOURCES}) ... set_property(TARGET MyLib PROPERTY CXX_STANDARD 11) set_property(TARGET MyLib PROPERTY CXX_STANDARD_REQUIRED ON)

        【讨论】:

          【解决方案5】:

          有时,这不会是其他答案中提到的配置问题。就我而言,问题在于一个文件恰好以.CPP 扩展名而不是.cpp 保存。 QMake (Qt5) 错误地识别了文件并试图用 C 编译器而不是 C++ 编译器来编译它。 Qt4 的 QMake 没有出现这个问题。重命名文件解决了这个问题。

          我当时的评论是“这真的是 f&%%& 这么简单吗!”

          【讨论】:

          • 欢迎来到 SO!您的回答与其说是回答不如说是评论。编辑或删除它。
          猜你喜欢
          • 2016-10-20
          • 2017-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-24
          • 2012-11-29
          • 2023-01-19
          相关资源
          最近更新 更多