如何使用qmake指定目标Mac OS X版本

10

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

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

当我检查编译命令行时,我发现它包含了-mmacosx-version-min=10.6标志。我尝试按照以下方式更新我的.pro文件,但似乎没有得到考虑:

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

macx {
    -mmacosx-version-min=10.7
}

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


你的Qt版本可能太旧了。请问你使用的操作系统和Qt版本是什么?你尝试过使用Qt 5.2.1或5.3.x吗? - Kuba hasn't forgotten Monica
这不取决于Qt版本,而是取决于qmake.conf指定的最小部署目标版本。 - BigONotation
2个回答

11

您实际上可以将此部署目标行 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 添加到您的QMake项目文件中。 您无需重新安装Qt。

但是要记住一件事:如果您构建任何其他库并将其包含在应用程序包中,请确保它们也编译为向后兼容! 如果需要任何库的帮助,则有一个相应的CMake命令,即CMAKE_OSX_DEPLOYMENT TARGET


10

在查看了一个类似的问题后,我找到了解决方法:QtCreator升级OSX后构建系统崩溃

您可以通过更新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_DEPLOYMENT_TARGET版本注释掉了。

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

macx {
    QMAKE_MAC_SDK = macosx10.9
}

解决方法是重新安装Qt。安装过程会根据平台调整这些文件。一个主要的操作系统版本升级可能会破坏开发环境,这并非不可想象。 - Kuba hasn't forgotten Monica
1
我认为这与重新安装Qt无关。我正在使用最新的Qt 5.3版本。我记得在某个地方读到过,当从源代码构建Qt时,可以指定Mac的最小部署目标。这意味着当Qt的开发人员构建二进制文件时,他们将Mac OS X 10.6指定为最小的部署平台。 - BigONotation
由于它显然对我和许多其他人都有效,所以我坚持认为这是安装过程进行了微调。安装的Qt版本不一定可移植到新的主要OS X版本。 - Kuba hasn't forgotten Monica
在像 include(../common/macx.conf) 这样的东西中不要使用相对路径,这些路径将相对于项目位置。而是应该使用绝对路径,例如 include(/Users/(username)/Qt/5.7/clang_64/mkspecs/common/macx.conf) - Donald Duck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接