【问题标题】:XCode 6 on Yosemite : support of C++11 is broken?Yosemite 上的 XCode 6:对 C++11 的支持被破坏了?
【发布时间】:2014-11-20 13:32:21
【问题描述】:

我正在尝试在 Yosemite 上的 XCode 6 中构建一个 c++11 和 Qt 5.3 项目。 XCode 项目由qmake 生成(我不得不在qdevice.pri 文件中将QMAKE_MAC_SDK 的值更改为macosx10.10)。在 XCode 的构建设置中,C++ 方言为C++11,标准库为libc++

现在 XCode 出现以下错误

clang:错误:-stdlib=libc++ 的部署目标无效(需要 OS X 10.7 或更高版本)

我相信 Yosemite 是 OS X 10.10,从日志中我还可以看到 XCode 正在使用以下 clang 选项:

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk

上面的MacOSX10.10.sdk 文件夹存在。我想知道哪里出错了......

【问题讨论】:

    标签: xcode qt c++11 osx-yosemite


    【解决方案1】:

    您还没有告诉编译器最低 OSX 目标是什么。为了使用libc++,它必须是 10.7,因为这是该库的第一个 OSX 版本。

    你需要添加的命令行选项是:

    -mmacosx-version-min=10.7
    

    我不确定您如何使用 QMake 获得 clang 的选项,但是根据 this,这是通过调整 mkspec 来完成的:

    问题:

    我想添加编译器选项-mmacosx-version-min=10.6。一世 试过设置

    QMAKE_CXXFLAGS += -mmacosx-version-min=10.6

    在我的 .pro 文件中。这 问题是这个选项也被 mkspecs 赋予了一个值 配置文件 – common/g++-macx.conf 将其设置为 -mmacosx-version-min=10.5。结果是编译器命令行将包含我的设置和 mkspecs 设置。 mk 规范 设置最后出现并将生效。我怎么能告诉编译器 使用“-mmacosx-version-min=10.6”?

    (一个)答案:

    调整 mkspec,或者通过复制原始文件创建一个新的, 更改最低版本和名称。

    【讨论】:

    • 感谢提示 :) 在 XCode 的项目构建设置中,在“部署”部分下,有一个选项“OS X 部署目标”,它是“10.6”,将其更改为版本10.6以上解决了这个问题。稍后我将探索 qmake 解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2022-10-21
    • 2012-11-01
    相关资源
    最近更新 更多