2014-06-16 9 views
8

I C++ 11-Code auf dem Mac OS X mit Qt Creator/qmake zu kompilieren versuchen und ich die folgende Fehlermeldung erhalten:Wie Ziel Mac OS X Version angeben qmake mit

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

Als ich Ich habe festgestellt, dass es die -mmacosx-Version-min = 10.6-Flag enthält. Ich versuchte, meine .proDatei wie folgt zu aktualisieren, aber es scheint, dass dies nicht berücksichtigt wird:

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

macx { 
    -mmacosx-version-min=10.7 
} 

Irgendwelche Vorschläge wäre hilfreich. Vielen Dank!

+0

Ihre Version von Qt ist wahrscheinlich zu alt. Was ist die OS- und Qt-Version und hast du es mit Qt 5.2.1 oder 5.3.x versucht? –

+0

Siehe Antwort unten. Es hängt nicht von der Qt-Version ab, sondern von der minimalen Bereitstellungszielversion, die von qmake.conf angegeben wird. – BigONotation

Antwort

7

können Sie tatsächlich, dass die Bereitstellungsziellinie QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 auf Ihre QMake Projektdatei hinzuzufügen. Sie müssen Qt nicht neu installieren.

Eine Sache jedoch im Hinterkopf: Wenn Sie andere Bibliotheken erstellen, die Sie in Ihr Anwendungspaket aufnehmen, stellen Sie sicher, dass sie auch aus Gründen der Abwärtskompatibilität kompiliert sind! Falls es bei irgendwelchen Bibliotheken hilft, gibt es einen äquivalenten CMake-Befehl, CMAKE_OSX_DEPLOYMENT TARGET.

5

OK fand die Lösung nach dem bei einer ähnlichen Frage sah zu haben: QtCreator build system is broken after OSX upgrade

Sie das minimale Ziel Mac OS X durch die Aktualisierung der qmake.conf Datei für Klirren in Ihrer Qt-Installation ändern (Ich verwende Qt5.3).

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

Bitte beachten, dass ich die Standard-QMAKE_MACOSX_DEPLOYMENT_TARGET Kommentar gesetzt habe: Die Datei wird in dem Qt-Installationsverzeichnis auf Qt/5.3/clang_64/mkspecs/macx-Klirren/qmake.conf Die aktualisierte Version ist unten angegeben Version bietet mit der Qt-Installation.

Schließlich können Sie auch angeben, welche in Ihrer .pro-Datei verwenden sdk wie folgt:

macx { 
    QMAKE_MAC_SDK = macosx10.9 
} 
+0

Das Update ist dann, Qt neu zu installieren. Der Installationsprozess optimiert diese Dateien entsprechend der Plattform. Es ist nicht undenkbar, dass ein Hauptupgrade der Betriebssystemversion eine Entwicklungsumgebung durchbrechen würde. –

+1

Ich glaube nicht, dass es etwas mit der Neuinstallation von Qt zu tun hat. Ich verwende die neueste Version von Qt 5.3. Ich glaube, ich habe irgendwo gelesen, dass Sie beim Erstellen von Qt aus der Quelle das minimale Bereitstellungsziel für den Mac angeben können. Das bedeutet einfach, dass, wenn die Leute bei Qt die Binärdateien erstellen, sie Mac OS X 10.6 als minimale Bereitstellungsplattform angeben. – BigONotation

+0

Da es offensichtlich für mich und für viele andere Leute funktioniert, behalte ich meine Behauptung, dass es der Installationsprozess ist, der das zwickt. Eine installierte Version von Qt ist nicht unbedingt auf eine neue Hauptversion von OS X übertragbar. –