2012-04-05 4 views
15

Um die Situation zu vereinfachen, lassen Sie uns sagen, dass es 2 Dateien gibt: core.cpp und main.cpp.Wie baue ich eine statische Bibliothek und eine ausführbare Datei mit Qt?

core.cpp enthält die Funktionalität des Programms und main.cpp enthält die grundlegende main() Implementierung.

Ich möchte Qt (qmake und die .pro-Dateien verwenden)

  • erste Build core.a und
  • dann verwenden, und main.cppmain.exe zu bauen.

Wie kann ich dies in der qmake-Datei einrichten?

Antwort

26

Filesystem Layout:

MyProject 
|_ myproject.pro 
|_ core 
    |_ core.cpp 
    |_ core.h 
    |_ core.pro 
|_ app 
    |_ main.cpp 
    |_ app.pro 

myproject.pro:

TEMPLATE = subdirs 
CONFIG += ordered 
SUBDIRS = core \ 
      app 
app.depends = core 

core.pro:

TEMPLATE = lib 
CONFIG += staticlib 
HEADERS = core.h 
SOURCES = core.cpp 

app.pro:

TEMPLATE = app 
SOURCES = main.cpp 
LIBS += ../core/libcore.a 
TARGET = ../app-exe # move executable one dire up 
+0

Nitpick: Das Drücken von play bewirkt: 'Programm konnte nicht gestartet werden. Pfad oder Berechtigungen falsch? '. Wie behebe ich das? (Es sucht offenbar nach der ausführbaren Datei im Basisverzeichnis) – chacham15

+0

Einfaches ausführbares Build-Verzeichnis mit TARGET var verschieben, siehe aktualisierte Antwort – Masci

+1

'INCLUDEPATH + = ../ core /' sollte auch in 'app.pro' benötigt werden, Recht? –

Verwandte Themen