2016-04-15 3 views
3

Ich benutze qmake/make um eine Bibliothek zu erstellen. Im Moment funktioniert der Build, aber wir können die resultierende Bibliothek nicht verwenden.Wie man alternative CFLAGS in qmake entfernen?

qmake erzeugt dieses Makefile:

CFLAGS  = -Wall -pedantic -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -O2 $(DEFINES) 
CXXFLAGS  = -Wall -pedantic -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -O2 $(DEFINES) 

Wenn das Makefile zu modifizieren und diese Optionen verwenden, funktioniert es:

CFLAGS  = -Wall -pedantic -fPIC 
CXXFLAGS  = -Wall -pedantic -fPIC 

Meine .pro-Datei enthält diese Informationen:

TEMPLATE = lib subdirs 
CONFIG = create_prl staticlib 
QMAKE_CXXFLAGS = -Wall -pedantic -fPIC 
QMAKE_CFLAGS = -Wall -pedantic -fPIC 
# and Sources + headers 

Die Frage ist, wie kann ich qmake nur die benötigten Flags generieren lassen? (D -Wall -pedantic -fPIC)

+0

Sie müssen wirklich anfangen, diese Optionen zu entfernen one-by-one und herauszufinden, welche diejenigen Probleme verursachen. Meine Vermutung ist, dass es ein oder zwei problematische Optionen gibt. '-m64' erstellt 64-Bit-Code, versuchen Sie, mit 32-Bit-Code zu verknüpfen? ** Auf welcher Plattform ist es? ** (Was ist die Mkspec, die Sie verwenden)? –

+0

Wenn Sie die Kompilierungsoptionen ändern müssen, müssen Sie die relevanten Dateien in 'qtbase/mkspecs', aus denen diese Optionen stammen, ändern, Qt neu kompilieren und neu installieren und dann Ihre Anwendung neu kompilieren. Wenn Sie Änderungen an den Compileroptionen vornehmen, wird Ihre Bibliothek auch mit Qt binär-inkompatibel, so dass Sie vorhandene Qt-Binärdateien nicht wiederverwenden können! –

+0

Sie sollten auch entscheiden, ob Sie eine C++ - API oder ein CAPI-Formular für Ihre Bibliothek bereitstellen möchten. Wenn Sie ein CAPI bereitstellen, sind die C++ - Compileroptionen für den Benutzer Ihrer Bibliothek nicht wichtig, abgesehen davon, dass Sie sicherstellen, dass der 32/64-Bit-Computer richtig ausgewählt ist. –

Antwort

1

ich erfolgreich entfernt alle Flaggen diese Befehle:

QMAKE_CXXFLAGS_RELEASE = -Wall -pedantic -fPIC 
QMAKE_CFLAGS_RELEASE = -Wall -pedantic -fPIC