Wie gibt eine Bibliothek Dateiabhängigkeit für qmake in Qt?
-
13-09-2019 - |
Frage
Haben Sie eine SomeLib.pro-Datei, die enthält:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
Dann in einem abhängigen SomeApp.pro:
..
debug:LIBS += -lSomeLib_debug
..
Wie kann ich SomeApp zwingen zu bauen, wenn ich somelib in qmake berühren?
Lösung
Es ist hässlich, weil Sie die genaue Bibliotheksdatei Namen geben müssen, aber dies sollte funktionieren:
TARGETDEPS + = libFoo.a
Andere Tipps
QT Creator wird die Arbeit tun, wenn Sie auf „Hinzufügen Bibliothek ...“ im Kontextmenü des Projektes, das die Bibliothek enthalten sollte.
Diese Variablen konfiguriert automatisch für Sie:
- LIBS
- INCLUDEPATH
- DEPENDPATH
- PRE_TARGETDEPS
Siehe auch http: //doc.qt. digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
In Antwort auf Zahir Kommentar, es ist vielleicht erwähnenswert, dass die besagt, diese Abhängigkeit in qmake Dateien nicht notwendig ist, wenn DLLs verwenden, aber wesentlich , wenn Ihr exe auf einer statischen Bibliothek abhängig ist.
qmake
verfügt nicht über diese Fähigkeit.
Stattdessen setzen Sie Ihre App und lib in Unterverzeichnissen, dann ein Makefile in ihrem übergeordneten Verzeichnis erstellen, die etwa wie folgt aussehen:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
Dann immer make
aus diesem Verzeichnis ausgeführt werden.
I verwendet:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
Es funktioniert, aber ist ungeschickt, da es notwendig ist, vollständigen Pfad zur Bibliothek angeben, die für jedes Betriebssystem / Compiler unterscheiden.
sicher, dass kann nicht möglich sein, reden Sie qmake mit einer Reverse-Lookup-Abhängigkeit zu tun? so was u wollen, ist für sie app B (und andere App abhängig von Bibliothek A) zu bauen, nachdem Sie eine Änderung in Bibliothek A gemacht haben?
das ist ein bisschen wie wenn man sagt, alle Visual Basic-Anwendungen neu kompilieren, wenn vbrun300.dll aktualisiert wird?