プロジェクトファイルの作成
プロジェクトファイルには、アプリケーション、ライブラリ、またはプラグインをビルドするために qmake が必要とするすべての情報が含まれています。通常、一連の宣言を使用してプロジェクト内のリソースを指定しますが、単純なプログラミング構文がサポートされているため、プラットフォームや環境ごとに異なるビルドプロセスを記述することができます。
プロジェクトファイルの構成要素
qmake が使用するプロジェクトファイル形式は、単純なビルドシステムからかなり複雑なビルドシステムまで幅広くサポートできます。単純なプロジェクトファイルでは、プロジェクトで使用されるソースファイルやヘッダーファイルを示す標準変数を定義する、わかりやすい宣言的なスタイルが採用されています。複雑なプロジェクトでは、制御フロー構造を使用してビルドプロセスを微調整することができます。
以下のセクションでは、プロジェクトファイルで使用されるさまざまな種類の要素について説明します。
変数
プロジェクトファイルでは、変数は文字列のリストを保持するために使用されます。最も単純なプロジェクトでは、これらの変数は、使用する設定オプションを qmake に通知したり、ビルドプロセスで使用するファイル名やパスを指定したりするために使われます。
qmake は各プロジェクトファイル内で特定の変数を検索し、その内容に基づいて Makefile に書き込むべき内容を決定します。たとえば、HEADERSおよびSOURCES変数に含まれる値のリストは、プロジェクトファイルと同じディレクトリにあるヘッダーファイルやソースファイルについて qmake に伝えるために使用されます。
また、変数は内部的に一時的な値のリストを格納するために使用することもでき、既存の値のリストは新しい値で上書きしたり、拡張したりすることができます。
以下のスニペットは、変数に値のリストがどのように割り当てられるかを示しています:
HEADERS = mainwindow.h paintwidget.h変数内の値のリストは、次のように拡張されます。
SOURCES = main.cpp mainwindow.cpp \
paintwidget.cpp
CONFIG += console注: 最初の代入では、 HEADERS 変数と同じ行で指定された値のみが含まれます。2番目の代入では、バックスラッシュ (\) を使用して、SOURCES 変数内の値を行ごとに分割しています。
CONFIG変数は、qmakeがMakefileを生成する際に使用するもう1つの特別な変数です。これについては「一般的な設定」で説明しています。上記のスニペットでは、console がCONFIG に含まれる既存の値のリストに追加されています。
次の表には、よく使用される変数の一部とその内容が一覧表示されています。変数の完全なリストとその説明については、「変数」を参照してください。
| 変数 | 内容 |
|---|---|
| CONFIG | プロジェクトの一般的な設定オプション。 |
| DESTDIR | 実行ファイルまたはバイナリファイルが配置されるディレクトリ。 |
| FORMS | User Interface Compiler (uic) によって処理される UI ファイルのリスト。 |
| HEADERS | プロジェクトのビルド時に使用されるヘッダー(.h)ファイルのファイル名のリスト。 |
| QT | プロジェクトで使用される Qt モジュールのリスト。 |
| RESOURCES | 最終的なプロジェクトに含めるリソース(.qrc)ファイルのリスト。これらのファイルの詳細については、『Qt リソースシステム』を参照してください。 |
| SOURCES | プロジェクトのビルド時に使用されるソースコードファイルの一覧。 |
| TEMPLATE | プロジェクトで使用するテンプレートです。これにより、ビルド処理の出力がアプリケーション、ライブラリ、またはプラグインのいずれになるかが決まります。 |
変数の内容は、変数名の先頭に `$$` を付けることで読み取ることができます。これを使用して、ある変数の内容を別の変数に代入することができます。
TEMP_SOURCES = $$SOURCES$$ 演算子は、文字列や値のリストを操作する組み込み関数と組み合わせて広く使用されます。詳細については、「qmake 言語」を参照してください。
空白
通常、変数代入では値は空白で区切られます。スペースを含む値を指定するには、その値を二重引用符で囲む必要があります:
DEST = "Program Files"引用符で囲まれたテキストは、変数が保持する値のリストにおいて単一の項目として扱われます。スペースを含むパスを扱う際、特にWindowsプラットフォーム向けのINCLUDEPATHおよび LIBS変数を定義する際には、同様のアプローチが用いられます:
win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"コメント
プロジェクトファイルにコメントを追加できます。コメントは# 文字で始まり、その行の末尾まで続きます。例:
# Comments usually start at the beginning of a line, but they
# can also follow other content on the same line.変数の代入式に# 文字を含めるには、組み込み変数LITERAL_HASHの内容を使用する必要があります。
組み込み関数と制御フロー
qmake には、変数の内容を処理するための組み込み関数が多数用意されています。単純なプロジェクトファイルで最もよく使用される関数は、引数としてファイル名を取るinclude()関数です。 指定されたファイルの内容は、include 関数が使用されている箇所にプロジェクトファイルに組み込まれます。include 関数は、他のプロジェクトファイルを組み込むために最もよく使用されます:
include(other.pro)条件付き構造のサポートは、プログラミング言語におけるif 文のように動作するスコープを通じて提供されます:
win32 {
SOURCES += paintwidget_win.cpp
}中括弧内の代入は、条件が真の場合にのみ実行されます。この場合、win32 CONFIGオプションを設定する必要があります。Windows ではこれが自動的に行われます。中括弧の開きは、条件と同じ行に記述する必要があります。
通常はループを必要とするような、変数に対するより複雑な操作は、find()、unique()、count() などの組み込み関数によって提供されます。これらの関数やその他多くの関数は、文字列やパスの操作、ユーザー入力の処理、外部ツールの呼び出しのために用意されています。 関数の使用方法の詳細については、「qmake言語」を参照してください。すべての関数の一覧とその説明については、「置換関数」および「テスト関数」を参照してください。
プロジェクトテンプレート
TEMPLATE変数は、ビルドされるプロジェクトの種類を定義するために使用されます。プロジェクトファイルでこれが宣言されていない場合、qmakeはアプリケーションがビルドされるものと想定し、その目的に適したMakefile(または同等のファイル)を生成します。
以下の表は、利用可能なプロジェクトの種類をまとめ、qmake がそれぞれについて生成するファイルについて説明しています:
| テンプレート | qmake による出力 |
|---|---|
| app (デフォルト) | アプリケーションをビルドするための Makefile。 |
| lib | ライブラリをビルドするための Makefile。 |
| aux | 何もビルドしないための Makefile。たとえば、プロジェクトがインタプリタ型言語で記述されているなど、ターゲットの作成にコンパイラを呼び出す必要がない場合にこれを使用します。 注:この テンプレートタイプは 、Makefile ベースのジェネレータでのみ利用可能です。特に、vcxproj および Xcode ジェネレータでは機能しません。 |
| subdirs | SUBDIRS変数で指定されたサブディレクトリに関するルールを含むMakefile。各サブディレクトリには、それぞれ独自のプロジェクトファイルが含まれている必要があります。 |
| vcapp | アプリケーションをビルドするための Visual Studio プロジェクトファイル。 |
| vclib | ライブラリをビルドするための Visual Studio プロジェクトファイル。 |
| vcsubdirs | サブディレクトリ内のプロジェクトをビルドするための Visual Studio ソリューション ファイル。 |
app およびlib テンプレートを使用するプロジェクトのプロジェクトファイルの作成方法については、「一般的なプロジェクトタイプのビルド」を参照してください。
subdirs テンプレートを使用する場合、qmake は Makefile を生成し、指定された各サブディレクトリを調べ、そこで見つかったプロジェクトファイルを処理し、新しく作成された Makefile に対してプラットフォームのmake ツールを実行します。SUBDIRS 変数は、処理対象となるすべてのサブディレクトリのリストを格納するために使用されます。
一般的な設定
CONFIG変数は、プロジェクトの構成に用いるオプションや機能を指定します。
プロジェクトは、リリースモード、デバッグモード、あるいはその両方でビルドできます。デバッグとリリースの両方が指定された場合、最後に指定されたものが有効になります。プロジェクトのデバッグ版とリリース版の両方をビルドするために `debug_and_release ` オプションを指定すると、qmake が生成する Makefile には、両方のバージョンをビルドするルールが含まれます。これは次のように呼び出すことができます:
make allCONFIG 変数にbuild_all オプションを追加すると、プロジェクトをビルドする際のデフォルトがこのルールになります。
注: CONFIG 変数で指定された各 オプションは、スコープ条件としても使用できます。組み込みのCONFIG()関数を使用することで、特定の構成オプションが存在するかどうかをテストできます。たとえば、次の行は、opengl オプションのみが使用されているかどうかをテストするためのスコープ条件として、この関数を示しています:
CONFIG(opengl) {
message(Building with OpenGL support.)
} else {
message(OpenGL support is not available.)
}これにより、release ビルドとdebug ビルドで異なる構成を定義できるようになります。詳細については、「スコープの使用」を参照してください。
以下のオプションは、ビルド対象となるプロジェクトの種類を定義します。
注: これらのオプションの一部 は、該当するプラットフォームで使用した場合にのみ有効になります。
| オプション | 説明 |
|---|---|
| qt | プロジェクトは Qt アプリケーションであり、Qt ライブラリに対してリンクする必要があります。QT 変数を使用して、アプリケーションに必要な追加の Qt モジュールを制御できます。この値はデフォルトで追加されますが、Qt 以外のプロジェクトで qmake を使用する場合は、これを削除することができます。 |
| x11 | このプロジェクトは X11 アプリケーションまたはライブラリです。ターゲットが Qt を使用する場合、この値は必要ありません。 |
アプリケーションおよびライブラリのプロジェクトテンプレートには、ビルドプロセスを微調整するためのより専門的な設定オプションが用意されています。これらのオプションについては、「一般的なプロジェクトタイプのビルド」で詳しく説明されています。
たとえば、アプリケーションが Qt ライブラリを使用しており、debug モードでビルドしたい場合、プロジェクトファイルには次の行が含まれます。
CONFIG += qt debug注: 「=」ではなく「+=」を使用する必要があります 。そうしないと、qmakeはQtの設定を使用してプロジェクトに必要な設定を決定できなくなります。
Qt ライブラリの宣言
CONFIG変数に qt という値が設定されている場合、qmakeによるQtアプリケーションのサポートが有効になります。これにより、アプリケーションで使用するQtモジュールを細かく調整することが可能になります。これは、必要な拡張モジュールを宣言するために使用できるQT変数によって実現されます。 たとえば、次のようにして XML モジュールとネットワークモジュールを有効にできます。
QT += network xml注: QT には デフォルトでcore およびgui モジュールが含まれているため、上記の宣言により、このデフォルトのリストにネットワークモジュールとXMLモジュールが追加されます。次の割り当てではデフォルトのモジュールが省略されるため、アプリケーションのソースコードをコンパイルする際にエラーが発生します:
QT = network xml # This will omit the core and gui modules.gui モジュールを含めずにプロジェクトをビルドしたい場合は、「-=」演算子を使用して除外する必要があります。デフォルトでは、QT にはcore とgui の両方が含まれているため、次の行を実行すると、最小限の Qt プロジェクトがビルドされます:
QT -= gui # Only the core module is used.QT 変数に追加できるQtモジュールのリストについては、QTを参照してください。
構成機能
qmake は、feature (.prf) ファイルで指定される追加の設定機能を用いて設定できます。これらの追加機能は、多くの場合、ビルドプロセス中に使用されるカスタムツールのサポートを提供します。ビルドプロセスに機能を追加するには、CONFIG 変数に機能名(featureファイル名の語幹)を追加します。
たとえば、qmake では、次の行を指定することで、D-Bus や ogg ライブラリなど、pkg-config でサポートされている外部ライブラリを活用するようにビルドプロセスを設定できます。
CONFIG += link_pkgconfig
PKGCONFIG += ogg dbus-1機能の追加に関する詳細については、「新しい設定機能の追加」を参照してください。
その他のライブラリの宣言
Qtに付属するライブラリに加えて、プロジェクトで他のライブラリを使用する場合は、プロジェクトファイルでそれらを指定する必要があります。
qmake がライブラリを検索するパスや、リンク対象となる特定のライブラリは、LIBS変数の値のリストに追加できます。ライブラリへのパスを指定するか、Unix 形式の表記を使用してライブラリとパスを指定することができます。
たとえば、以下の行はライブラリの指定方法を示しています:
LIBS += -L/usr/local/lib -lmathヘッダーファイルを含むパスも、INCLUDEPATH変数を使用して同様の方法で指定できます。
たとえば、ヘッダーファイルを検索するパスをいくつか追加するには、次のようにします:
INCLUDEPATH = c:/msdev/include d:/stl/include© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.