web-dev-qa-db-ja.com

qmakeを使用して1つのプロジェクトで複数のバイナリをビルドするにはどうすればよいですか?

同じファイルのセットで動作する小さなプログラムのセットで構成される小さなqtアプリスイートを書いています。それらは次のように構成されています。

/
  app1/
    main.cpp
  app2/
    main.cpp
  app3/
    main.cpp
  common/
    project.h
    project.cpp
    somemore.h
    somemore.cpp
  appsuite.pro

qmake && makeを実行するとき、次のバイナリをビルドする必要があります。

  • app1/app1
  • app2/app2
  • app3/app3

このように機能するようにappsuite.proを書くにはどうすればよいですか?
.priファイルについて何か聞いたことがありますが、自分の「状況」でそれらを使用する方法がわかりませんでした。

感謝します、
jrh

34
jrharshath

これを行う1つの方法は、サブディレクトリごとに.proファイルを作成することです。

appsuite.pro:

TEMPLATE = subdirs
SUBDIRS = common app1 app2 app3
app1.depends = common
app2.depends = common
app3.depends = common

app1/app1.pro:

TARGET = app1
SOURCES = main.cpp
INCLUDEPATH += ../common
LIBS += -L../common -lcommon

Common.proファイルは、バイナリにリンクできる静的ライブラリを構築する必要があります。

common/common.pro:

TEMPLATE = lib
CONFIG = staticlib
SOURCES = project.cpp more.cpp
HEADERS = project.h more.h
34
PiedPiper

1つの方法は、グローバルプロジェクトを作成することですappsuite.pro、 このような:

TEMPLATE = subdirs
SUBDIRS = app1 app2 app3

サブプロジェクトapp1.proおよびapp2.proは、common /サブディレクトリに関する依存関係を使用して、これらのアプリケーションのみに対しても作成する必要があります。

Appsuite.proで他の依存関係を指定することもできます。たとえば、app1がapp2に依存している場合、次のようになります。

app1.depends = app2
9
RedGlyph