Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify target mac os x version using qmake

Tags:

c++

macos

qt

qmake

I am trying to compile c++11 code on the Mac OS X using Qt Creator/qmake and I am getting the following error:

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

When I checked the compile command line, I noticed that it contains the -mmacosx-version-min=10.6 flag. I tried to update my .pro file as follows, but it seems that this is not taken into account:

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

macx {
    -mmacosx-version-min=10.7
}

Any suggestions would be helpful. Thanks!

like image 748
BigONotation Avatar asked Jun 16 '14 11:06

BigONotation


2 Answers

You can actually add that deployment target line QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 to your QMake project file. You don't have to reinstall Qt.

One thing to keep in mind, though: if you build any other libraries that you include in your application bundle, make sure they're also compiled for backwards compatibility! In case it helps with any libraries, there's an equivalent CMake command as well, CMAKE_OSX_DEPLOYMENT TARGET.

like image 94
rainbowgoblin Avatar answered Oct 02 '22 20:10

rainbowgoblin


OK found the solution after having looked at a similar question: QtCreator build system is broken after OSX upgrade

You can change the minimal Mac OS X target by updating the qmake.conf file for clang in your Qt installation (I am using Qt5.3). The file is located in the Qt installation directory at Qt/5.3/clang_64/mkspecs/macx-clang/qmake.conf The updated version is given below:

#
# 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)

Note that I've commented out the default QMAKE_MACOSX_DEPLOYMENT_TARGET version providing with the Qt install.

Finally, you can also specify which sdk to use in your .pro file as follows:

macx {
    QMAKE_MAC_SDK = macosx10.9
}
like image 41
BigONotation Avatar answered Oct 02 '22 22:10

BigONotation