web-dev-qa-db-ja.com

Qtで静的ライブラリと実行可能ファイルを構築するにはどうすればよいですか?

状況を簡単にするために、2つのファイルがあるとしましょう:_core.cpp_および_main.cpp_。

_core.cpp_にはプログラムの機能が含まれ、_main.cpp_には基本的なmain()実装が含まれます。

Qt(qmakeおよび.proファイルを使用)に

  • 最初に_core.a_をビルドし、次に
  • それと_main.cpp_を使用して_main.exe_を構築します。

これをqmakeファイルに設定するにはどうすればよいですか?

24
chacham15

ファイルシステムのレイアウト:

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

静的ライブラリのリソースを利用している場合は、それらもアプリケーションにインポートする必要があります。 Q_INIT_RESOURCEは、リソースファイルをアプリケーションにインポートする方法です。

静的ライブラリにファイル名がmyResources.qrcのリソースファイルがあるとします。次に、以下のようにアプリでこれを初期化する必要があります。

QApplication a(argc, argv);

Q_INIT_RESOURCE(resources); //Magic is here.

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

.proファイルは、Masciが提供する素晴らしい例のために、以下のように変更される可能性があります。

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