如何阻止qmake发出某些标志

时间:2013-07-07 22:43:06

标签: c++ qt qmake

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

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

然而,qmake在makefile中生成了follow标志

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中发出这个标志?

2 个答案:

答案 0 :(得分:0)

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

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

其他方式酿造:
 1.应用>公用事业>终端
 2.在终端:ruby -e“$(curl -fsSkL raw.github.com/mxcl/homebrew/go)”  3.在终端:酿酒医生
 4.在终端:brew install gcc
 5.现在在Qt中添加新的编译器(Projects选项卡)  6.在配置文件更改中QMAKE_CXXFLAGS + = -std = c ++ 0x

答案 1 :(得分:0)

通过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++,因为libc++在MacOSX 10.7之前根本不可用。

如果你需要libc++(例如某些C ++ 11功能)+你想让它在< 10.7上运行,那就不那么容易了。有关相关问题,请参阅here