【问题标题】:Qt 5.0 and c++11 with OSX Mountain LionQt 5.0 和 c++11 与 OSX Mountain Lion
【发布时间】:2012-12-29 12:06:49
【问题描述】:

离开 7 年后,我再次尝试 C++。我已经下载了新发布的用于 osx 的 Qt 5.0 sdk,但我无法获得使用 Qt Creator 编译的基本 c++11 功能。以下声明:

auto i = 3;

导致编译错误:

mainwindow.cpp:19: error: ISO C++ forbids declaration of 'i' with no type

我用谷歌搜索了类似的问题并找到了建议

QMAKE_CXXFLAGS += -std=c++11
  or
CONFIG += c++11

在 .pro 文件中。不幸的是没有成功。在无法识别的命令行选项上构建失败。

我一定是做错了什么。有什么建议么?

谢谢,

弗兰斯

【问题讨论】:

  • 你安装了什么编译器(和版本)?
  • 我有最新版本的 xcode 和它附带的命令行工具:版本 4.5.2 (4G2008a)。在 Xcode 本身中,使用 c++11 功能是没有问题的。此外,构建 boost 1.52 确实有效。
  • GCC 4.5 没有c++11 标准模式,而是有c++0x
  • 不幸的是,在 .pro 文件中使用 c++0x 代替 c++11 会出现同样的问题。
  • 你解决过这个问题吗?同样的事情发生在我身上。

标签: c++ macos c++11 qt5


【解决方案1】:

它看起来像 Qt Creator for Mac 错误。 我修复了它使用

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

在 .pro 文件中

【讨论】:

    【解决方案2】:

    我不知道这对你来说是否仍然是个问题。

    在我当前的系统(Max OS X Yosemite - Qt 5.4 - QtCreator 3.0 - XCode 6.1.1)上,这就像一个魅力:

    在 .pro 文件中:

    macx {
        QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
        QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
        QMAKE_CFLAGS += -mmacosx-version-min=10.7
        QMAKE_MAC_SDK = macosx10.9
    }
    
    macx {
        QMAKE_CXXFLAGS += -std=c++11 -stdlib=libc++
        QMAKE_CFLAGS += -std=c++11 -stdlib=libc++
    }
    CONFIG += c++11
    

    确保您也安装了最新的 Mac OS X SDK。

    【讨论】:

      【解决方案3】:

      根据gcc feature list,支持auto,因为gcc 4.4通过:

      g++ -std=c++0x
      

      您也可以尝试gcc-specific 表单:

      g++ -std=gnu++0x
      

      在您的情况下,可能会出现其他问题(g++ 参数未正确提升到编译器)。

      【讨论】:

      • 谢谢。不幸的是没有运气。我怀疑这个问题与 Mac 的 Qt 5.0 sdk 的构建方式有关(clang 与 g++)。但我对 XCode 工具和/或 Qt 的了解还不够,无法继续。我没有发现 Qt 文档在这方面有帮助。
      猜你喜欢
      • 2013-04-11
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 2012-09-03
      • 2013-03-16
      • 2012-09-12
      • 2012-12-09
      相关资源
      最近更新 更多