C++ 如何使用qmake指定目标mac os x版本

C++ 如何使用qmake指定目标mac os x版本,c++,macos,qt,qmake,C++,Macos,Qt,Qmake,我正在尝试使用Qt Creator/qmake在Mac OS X上编译c++11代码,但出现以下错误: clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later) 当我检查compile命令行时,我注意到它包含-mmacosx version min=10.6标志。我试图按如下方式更新.pro文件,但似乎没有考虑到这一点: QMAKE_CXXFLAGS += -std=c++1

我正在尝试使用Qt Creator/qmake在Mac OS X上编译c++11代码,但出现以下错误:

clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)
当我检查compile命令行时,我注意到它包含-mmacosx version min=10.6标志。我试图按如下方式更新.pro文件,但似乎没有考虑到这一点:

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

macx {
    -mmacosx-version-min=10.7
}

任何建议都会有帮助。谢谢

OK在看了一个类似的问题后找到了解决方案:

您可以通过更新Qt安装中clang的qmake.conf文件来更改最小Mac OS X目标(我使用的是Qt5.3)。该文件位于Qt安装目录中的Qt/5.3/clang_64/mkspecs/macx-clang/qmake.conf 更新版本如下:

#
# qmake configuration for Clang on OS X
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += app_bundle incremental global_init_link_order lib_version_first     plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/macx.conf)
include(../common/gcc-base-mac.conf)
include(../common/clang.conf)
include(../common/clang-mac.conf)

#QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7

load(qt_config)
注意,我已经注释掉了Qt安装提供的默认QMAKE_MACOSX_部署_目标版本

最后,您还可以指定在.pro文件中使用哪个sdk,如下所示:

macx {
    QMAKE_MAC_SDK = macosx10.9
}

实际上,您可以添加部署目标行
QMAKE\u MACOSX\u deployment\u target=10.6
到您的QMake项目文件。您不必重新安装Qt


但是要记住一件事:如果您构建了应用程序包中包含的任何其他库,请确保它们也是为了向后兼容而编译的!如果它对任何库都有帮助,那么还有一个等效的CMake命令,
CMake\u OSX\u部署目标

您的Qt版本可能太旧了。什么是操作系统和Qt版本,您是否尝试过Qt5.2.1或5.3.x?请参阅下面的答案。它不取决于Qt版本,而是取决于qmake.conf指定的最低部署目标版本。然后,修复程序是重新安装Qt。安装过程根据平台调整这些文件。一个主要的操作系统版本升级会破坏一个开发环境,这不是不可想象的。我不认为这与重新安装Qt有任何关系。我使用的是最新的Qt5.3版本。我想我在某个地方读到,当从源代码构建Qt时,可以为Mac指定最小的部署目标。这仅仅意味着当Qt的人构建二进制文件时,他们指定MacOSX10.6作为最小的部署平台。因为它显然对我和其他很多人都有效,所以我坚持我的主张,即是安装过程进行了调整。安装的Qt版本不一定可以移植到新的主要OS X版本。不要在
include(../common/macx.conf)
中使用相对路径,这些路径将与项目位置相对。而是使用绝对路径,例如
include(/Users/(username)/Qt/5.7/clang_64/mkspecs/common/macx.conf)