我在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中发出这个标志?
答案 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。