web-dev-qa-db-fra.com

Comment créer une bibliothèque statique et un exécutable avec Qt?

Pour simplifier la situation, disons qu'il existe 2 fichiers: core.cpp Et main.cpp.

core.cpp Contient les fonctionnalités du programme et main.cpp Contient l'implémentation de base de main().

Je veux que Qt (en utilisant qmake et les fichiers .pro)

  • construisez d'abord core.a puis
  • utilisez-le et main.cpp pour construire main.exe.

Comment configurer cela dans le fichier qmake?

24
chacham15

Disposition du système de fichiers:

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 += -L../core -lcore
TARGET = ../app-exe # move executable one dire up
33
Masci

Si vous utilisez des ressources dans votre bibliothèque statique, vous devez également les importer dans votre application. Q_INIT_RESOURCE est le moyen d'importer un fichier de ressources dans l'application.

Supposons que vous disposez d'un fichier de ressources dont le nom de fichier est myResources.qrc dans la bibliothèque statique. Ensuite, vous devez initialiser cela dans l'application comme indiqué ci-dessous:

QApplication a(argc, argv);

Q_INIT_RESOURCE(resources); //Magic is here.

MainWindow w;
w.show();
a.exec();

Le fichier .pro peut être modifié comme indiqué ci-dessous pour le grand exemple donné par Masci:

TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp
RESOURCES += myResources.qrc
0