2013-09-06 4 views
6

Ich möchte Optionen zum Linker beim Erstellen einer statischen Bibliothek mit qmake bereitstellen. Angenommen, ich möchte beim Erstellen mit MSVC eine ausführliche Linker-Ausgabe erhalten. Die Projektdatei sieht folgendermaßen aus:Wie Linker-Optionen zur Verfügung stellen, wenn eine statische Bibliothek mit qmake verknüpft wird?

# mylib.pro 
TEMPLATE = lib 
TARGET = mylib 
CONFIG += staticlib 
QT += core 
win32-msvc*: QMAKE_LFLAGS += /VERBOSE 
unix: QMAKE_LFLAGS += -v 

Das ist die gesamte Projektdatei. Es sollte zu einer leeren statischen Bibliothek ohne Objekte führen.

Einstellung weder QMAKE_LFLAGS noch QMAKE_LFLAGS_STATIC_LIB noch LIBS hat keine Auswirkungen auf den Linker. Nichts, was in diesen Variablen gesetzt ist, macht es sogar zum Makefile. Wenn QMAKE_LFLAGS funktioniert, würde ich erwarten, dass /VERBOSE oder -v an den Linker in der Befehlszeile übergeben wird, je nach Plattform.

Es spielt keine Rolle, welcher Makefile-Generator verwendet wird, dieses Verhalten scheint konsistent zu sein. Die zwei Plattformen von Interesse sind.

qmake -spec win32-msvc2008 
qmake -spec macx-llvm 

Durch plattformübergreifende Natur von qmake, können Sie es auf jeder Plattform testen, wo Sie Qt installiert passieren zu lassen. Dies reproduziert auf qmake sowohl aus Qt 4.8.4 als auch aus 5.1.1. Die in der mkspec angegebene msvc-Version spielt keine Rolle.

Antwort

4

In staticlib Projekte werden die LFLAGS nicht an den Linker übergeben. In der Tat gibt es keine dokumentierte Möglichkeit, solche Flags zu passieren.

Die Lösung ist generatorabhängig.

Für msvc_nmake, LIBFLAGS werden stattdessen an den Linker übergeben. Um ein ausführliche Ausgabe zu erhalten, könnten hinzufügen Sie

QMAKE_LIBFLAGS += /VERBOSE 

Um sicherzustellen, dass es funktioniert, auf jedem System, können Sie qmake -spec win32-msvc2008 aufrufe; die bestimmte msvc-Version spielt keine Rolle.

Für unixmake, AR wird verwendet, um den Linker aufzurufen, also müssen Sie die Flags zu QMAKE_AR hinzufügen. Um eine ausführliche Ausgabe zu erhalten, könnte hinzufügen Sie

QMAKE_AR += -v 

Um zu überprüfen, rufen Sie qmake -spec macx-llvm; Jede andere Unix-Spezifikation sollte ebenfalls funktionieren.