2009-04-23 15 views

Antwort

15

Es ist hässlich, weil Sie die genaue Bibliotheksdatei Namen geben müssen, aber dies sollte funktionieren:

TARGETDEPS + = libFoo.a

+0

Großartig! Genau das, was ich brauchte! –

+1

Verwenden Sie stattdessen PRE_TARGETDEPS. –

+0

warum? Was ist mit TARGETDEPS falsch? – paulm

0

sicherlich das kann nicht möglich sein, Sie sprechen über die Verwendung von qmake, um eine umgekehrte Abhängigkeit Lookup zu tun? Was willst du also, um App B (und jede andere App, die von Bibliothek A abhängig ist) zu erstellen, nachdem du eine Änderung an Bibliothek A vorgenommen hast?

das ist ein bisschen wie sagen, alle Visual Basic-Anwendungen neu kompilieren, wenn vbrun300.dll aktualisiert wird?

1

qmake bietet diese Fähigkeit nicht.

Stattdessen setzten Sie Ihre App und lib in Unterverzeichnissen erstellen dann ein Makefile in ihrem übergeordneten Verzeichnis, 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.

+1

Ich benutze qtcreator. Daher habe ich auf eine Lösung in einer .pro-Datei gehofft. –

2

In Antwort auf Zahir Kommentar, es ist vielleicht erwähnenswert, dass diese Angabe Abhängigkeit in qmake-Dateien ist nicht notwendig, wenn DLLs verwendet werden, aber ist essentiell, wenn Ihre Exe von einer statischen Bibliothek abhängt.

1

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.