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
)
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)? –
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! –
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. –