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?

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top