このページでは

qmake の入門

このチュートリアルでは、qmakeの基本について解説します。このマニュアルの他のトピックには、qmakeの使用に関するより詳細な情報が記載されています。

簡単な始め方

アプリケーションの基本的な実装が完了し、以下のファイルが作成されているものと仮定します:

  • hello.cpp
  • hello.h
  • main.cpp

これらのファイルは、Qtディストリビューションのexamples/qmake/tutorial ディレクトリ内にあります。 このアプリケーションの構成について、他にわかっていることは、Qtで記述されているということだけです。まず、お好みのプレーンテキストエディタを使用して、examples/qmake/tutorial にhello.pro というファイルを作成してください。最初に必要なのは、開発プロジェクトを構成するソースファイルとヘッダーファイルをqmakeに指定する行を追加することです。

まず、プロジェクトファイルにソースファイルを追加します。これを行うには、SOURCES変数を使用する必要があります。新しい行をSOURCES += で始め、その後にhello.cppと記述します。次のような内容になるはずです:

SOURCES += hello.cpp

プロジェクト内の各ソースファイルについてこれを繰り返し、最終的に次のような状態になるまで続けます:

SOURCES += hello.cpp
SOURCES += main.cpp

Make風の構文を好み、すべてのファイルを一括して記述したい場合は、次のように改行エスケープを使用できます:

SOURCES = hello.cpp \
          main.cpp

プロジェクトファイルにソースファイルがリストされたので、次はヘッダーファイルを追加する必要があります。これらはソースファイルとまったく同じ方法で追加しますが、使用する変数名がHEADERS である点が異なります。

これが完了すると、プロジェクトファイルは次のような状態になります:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

ターゲット名は自動的に設定されます。これはプロジェクトファイル名と同じですが、プラットフォームに応じた接尾辞が付加されます。たとえば、プロジェクトファイル名がhello.pro の場合、Windowsではhello.exe 、Unixではhello というターゲットになります。別の名前を使用したい場合は、プロジェクトファイル内で設定できます:

TARGET = helloworld

完成したプロジェクトファイルは、次のようになります:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

これで、qmake を使用してアプリケーション用の Makefile を生成できます。プロジェクトディレクトリ内で、コマンドラインから次のように入力してください:

qmake -o Makefile hello.pro

注: パッケージマネージャーを介して Qt をインストールした場合 、バイナリはqmake6 である可能性があります。

その後、使用するコンパイラに応じて、make またはnmake と入力してください。

Visual Studio ユーザーの場合、qmake を使用して Visual Studio プロジェクトファイルを生成することもできます。例:

qmake -tp vc hello.pro

アプリケーションをデバッグ可能にする

アプリケーションのリリース版には、デバッグシンボルやその他のデバッグ情報は含まれていません。開発中は、関連情報を含むアプリケーションのデバッグ版を作成しておくと便利です。これは、プロジェクトファイルのCONFIG変数にdebug を追加するだけで簡単に実現できます。

例:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

以前と同様に qmake を使用して Makefile を生成します。これにより、デバッグ環境でアプリケーションを実行した際に、アプリケーションに関する有用な情報を取得できるようになります。

プラットフォーム固有のソースファイルの追加

数時間のコーディングを経て、アプリケーションのプラットフォーム固有の部分に着手し、プラットフォーム依存のコードを分離して管理することに決めたかもしれません。 そこで、プロジェクトファイルに含めるべき2つの新しいファイル、hellowin.cpp とhellounix.cpp があります。これらを単にSOURCES 変数に追加するだけでは、両方のファイルがMakefileに記述されてしまいます。したがって、ここでは、ビルド対象のプラットフォームに応じて処理されるスコープを使用する必要があります。

Windows 向けにプラットフォーム依存のファイルを追加する簡単なスコープは、次のようになります:

win32 {
    SOURCES += hellowin.cpp
}

Windows向けにビルドする場合、qmakeはソースファイルのリストにhellowin.cpp を追加します。その他のプラットフォーム向けにビルドする場合、qmakeはこれを単に無視します。あとは、Unix固有のファイル用のスコープを作成するだけです。

それが完了すると、プロジェクトファイルは次のような構成になります:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}

以前と同様に qmake を使用して Makefile を生成します。

ファイルが存在しない場合の qmake の処理

特定のファイルが存在しない場合は、Makefile を作成したくない場合もあるでしょう。exists()関数を使用することで、ファイルが存在するかどうかを確認できます。また、error()関数を使用することで、qmake の処理を停止させることができます。これはスコープと同じ仕組みで動作します。スコープの条件をこの関数に置き換えるだけです。main.cpp というファイルの存在確認は、次のように記述します:

!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

! というシンボルは、テストを否定するために使用されます。つまり、ファイルが存在する場合はexists( main.cpp ) が真となり、ファイルが存在しない場合は!exists( main.cpp ) が真となります。

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

以前と同様に qmake を使用して makefile を生成します。main.cpp を一時的にリネームすると、メッセージが表示され、qmake は処理を停止します。

複数の条件のチェック

Windows を使用しており、コマンドラインでアプリケーションを実行した際に `qDebug() ` によるステートメントの出力を確認したいとします。この出力を確認するには、適切なコンソール設定でアプリケーションをビルドする必要があります。Windows の Makefile にこの設定を含めるには、`CONFIG ` の行に `console ` を追加するだけで簡単に実現できます。 しかし、Windows上で実行する場合に限り、かつ「CONFIG 」行にすでに「debug 」が指定されている場合にのみ、「CONFIG 」行を追加したいとします。これには、2つのネストされたスコープを使用する必要があります。まず1つのスコープを作成し、その中に別のスコープを作成します。処理対象の設定を、次のように2番目のスコープ内に記述します:

win32 {
    debug {
        CONFIG += console
    }
}

ネストされたスコープはコロンで連結できるため、最終的なプロジェクトファイルは次のようになります:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
    error( "No main.cpp file found" )
}
win32:debug {
    CONFIG += console
}

以上です!これで qmake のチュートリアルは完了し、開発プロジェクト用のプロジェクトファイルを作成する準備が整いました。

© 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.