【问题标题】:How to stop qmake from emiting certain flag如何阻止 qmake 发出某些标志
【发布时间】:2013-07-07 22:43:05
【问题描述】:

我在 OSX 上使用带有 clang 的 qmake。我尝试在 .pro 文件中使用带有以下标志的 c++11

QMAKE_CXXFLAGS += -std=c++11 -stdlib=libc++

但是 qmake 在 makefile 中生成跟随标志

CXXFLAGS = ... -mmacosx-version-min=10.5 ...

此标志会导致 clang 引发错误

invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

将标志更改为 10.7 解决了问题

CXXFLAGS = ... -mmacosx-version-min=10.7 ...

有什么方法可以阻止 qmake 在 makefile 中发出这个标志?

【问题讨论】:

    标签: c++ qt qmake


    【解决方案1】:

    您可以安装其他编译器,例如 gcc4.7。

    macports 有几个简单的方法:
    1.http://www.macports.org/install.php
    2. 应用程序 > 实用程序 > 终端
    3. 在终端:sudo port selfupdate
    4. sudo 端口安装 gcc47
    5. 现在在 Qt 中添加新的编译器(Projects 选项卡) 6. 在配置文件更改 QMAKE_CXXFLAGS += -std=c++0x

    其他方式冲泡:
    1. 应用程序 > 实用程序 > 终端
    2. 在终端: ruby​​ -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)" 3. 在终端: brew doctor
    4. 在终端: brew install gcc
    5. 现在在 Qt 中添加新的编译器(Projects 选项卡) 6. 在配置文件更改 QMAKE_CXXFLAGS += -std=c++0x

    【讨论】:

      【解决方案2】:

      通过QMAKE_MACOSX_DEPLOYMENT_TARGET指定目标版本,例如:

      QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
      

      如果您完全摆脱标志,您会收到如下消息:

      ld: warning: -macosx_version_min not specified, assuming 10.8
      

      所以,无论如何,你的编译器都会自动添加它。

      那个标志的存在是有原因的。它已写入您的二进制文件。当您尝试在旧系统上加载该二进制文件时,它将中止。

      现在,如果您真的希望兼容 MacOSX 10.5,则不能使用 -stdlib=libc++,因为在 MacOSX 10.7 之前,libc++ 根本不可用。

      如果你需要libc++(例如一些 C++11 特性)+ 你想让它在 here。

      【讨论】:

        猜你喜欢
        • 2019-10-18
        • 2022-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 2020-05-09
        • 2010-11-02
        相关资源
        最近更新 更多