qmakeを始める

このチュートリアルでは qmake の基本を学びます。このマニュアルの他のトピックには、qmake の使用に関するより詳細な情報が含まれています。

簡単なことから始める

アプリケーションの基本的な実装が終わったところで、以下のファイルを作成したとします:

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

これらのファイルは Qt ディストリビューションのexamples/qmake/tutorial ディレクトリにあります。アプリケーションのセットアップについて知っていることは、Qtで書かれているということだけです。まず、お気に入りのプレーンテキストエディタを使って、examples/qmake/tutorialhello.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 を生成する。これで、デバッグ環境でアプリケーションを実行するときに、 アプリケーションに関する有用な情報が得られるようになります。

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

数時間のコーディングの後、あなたはアプリケーションのプラットフォーム固有の部分に着手し、プラットフォーム依存のコードを分離しておくことにしたかもしれません。そこで、hellowin.cpphellounix.cpp という2つの新しいファイルをプロジェクト・ファイルに追加します。これらのファイルを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上で実行しているときに debug がすでにCONFIG 行にある場合にのみ、CONFIG 行を追加したいとします。そのためには、2つのネストしたスコープを使う必要がある。まず1つのスコープを作成し、その中にもう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のチュートリアルが終了し、開発プロジェクト用のプロジェクトファイルを書く準備ができました。

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