qmake紹介


qmakeコンセプト
紹介qmake
qmakeは、異なるプラットフォームの開発プロジェクトにmakefileを作成するためのTrolltechの使いやすいツールです.qmakeはmakefileの生成を簡略化するので、makefileを作成するには数行の情報しかないファイルを1つだけ必要とします.qmakeは、Qtで書かれているかどうかにかかわらず、どのソフトウェアプロジェクトでも使用できますが、Qt開発をサポートするために追加の特徴が含まれています.
qmakeは、プロジェクトファイルのような情報に基づいてmakefileを生成する.プロジェクトファイルは開発者によって生成できます.プロジェクトファイルは通常簡単ですが、必要に応じて非常に完璧です.プロジェクトファイルを変更する必要はありません.qmakeはMicrosoft Visual Studioのプロジェクトを生成することもできます.
qmakeの概念
QMAKESPEC環境変数
たとえば、WindowsでMicrosoft Visual Studioを使用する場合は、QMAKESPEC環境変数をwin 32-msvcに設定する必要があります.Solarisでgccを使用する場合は、QMAKESPEC環境変数をsolaris-g++に設定する必要があります.
qt/mkspecsの各ディレクトリには、プラットフォームとコンパイラの特定の情報を含むqmake.confファイルがあります.これらの設定はqmakeを使用するプロジェクトに適用されます.専門家でない限り、変更しないでください.たとえば、すべてのアプリケーションが特定のライブラリに接続する必要がある場合は、この情報を対応するqmake.confファイルに追加できます.
プロジェクト(.pro)ファイル
1つのプロジェクトファイルは、qmakeにこのアプリケーションのmakefileを作成するために必要な詳細を伝えるために使用されます.たとえば、ソースファイルとヘッダファイルのリスト、アプリケーション固有の構成、たとえば接続が必要な追加ライブラリ、または追加の含めるパスは、プロジェクトファイルに配置する必要があります.
「#」コメント
プロジェクトファイルにコメントを追加できます.コメントは、この行の最後まで「#」記号で始まります.
かたわく
テンプレート変数はqmakeがこのアプリケーションのためにどのmakefileを生成するかを教えます.使用可能な選択肢は次のとおりです.
  • app-アプリケーションのmakefileを作成します.これはデフォルト値なので、テンプレートが指定されていない場合は使用されます.
  • lib-ライブラリのmakefileを作成します.
  • vcapp-アプリケーションのVisual Studioプロジェクトファイルを作成します.
  • vclib-ライブラリのVisual Studioプロジェクトファイルを作成します.
  • subdirs-特定のディレクトリにアクセスし、プロジェクトファイルにmakefileを生成し、makeを呼び出すことができる特殊なテンプレートです.

  • 「app」テンプレート
    「app」テンプレートは、qmakeにアプリケーションを構築するためにmakefileを生成するように伝えます.このテンプレートを使用すると、以下のqmakeシステム変数が認められます.アプリケーションに特定の情報を指定するには、.proファイルで使用する必要があります.
  • HEADERS-アプリケーション内のすべてのヘッダファイルのリスト.
  • SOURCES-アプリケーション内のすべてのソースファイルのリスト.
  • FORMS-アプリケーション内のすべての.uiファイル(Qtデザイナによって生成される)のリスト.
  • LEXSOURCES-アプリケーション内のすべてのlexソースファイルのリスト.
  • YACCSOURCES-アプリケーション内のすべてのyaccソースファイルのリスト.
  • TARGET-実行可能なアプリケーションの名前.デフォルトはプロジェクトファイルの名前です.(拡張子が必要な場合は自動的に加算されます.)
  • DEstdIR-実行可能プログラムターゲットのディレクトリを配置します.
  • DEFINES-アプリケーションに必要な追加のプリプロセッサ定義のリスト.
  • INCLUDEPATH-アプリケーションに必要な追加のパスを含むリスト.
  • DEPENDPATH-アプリケーションに依存する検索パス.
  • VCATH-補足ファイルの検索パスを探します.
  • DEF_FILE-Windowsのみ必要:アプリケーションが接続する.defファイル.
  • RC_FILE-Windowsのみ必要:アプリケーションのリソースファイル.
  • RES_FILE-Windowsのみ必要:アプリケーションが接続するリソースファイル.

  • 既存の値を持つシステム変数を使用するだけです.たとえば、追加のINCLUDEPATHが必要ない場合は、指定する必要はありません.qmakeは必要なデフォルト値を提供します.たとえば、インスタンスプロジェクトファイルは次のようになります.
    TEMPLATE = app
    DESTDIR = c:/helloapp
    HEADERS += hello.h
    SOURCES += hello.cpp
    SOURCES += main.cpp
    DEFINES += QT_DLL
    CONFIG += qt warn_on release

    エントリがtemplateや宛先ディレクトリなどの単一値の場合は「=」を使用しますが、多値エントリの場合は「+=」を使用して既存のエントリを追加します.「=」を使用すると、既存の値が新しい値に置き換えられます.たとえば、DEFINES=QT_と書くとDLLでは、他のすべての定義が削除されます.
    「lib」テンプレート
    「lib」テンプレートは、qmakeにライブラリを作成するためにmakefileを生成するように伝えます.このテンプレートを使用すると、「app」テンプレートにシステム変数が記載されているほか、VERSIONがサポートされています.ライブラリに特定の情報を指定する.proファイルで使用する必要があります.
  • VERSION-ターゲット・ライブラリのバージョン番号(例:2.3.1).

  • subdirsテンプレート
    「subdirs」テンプレートは、qmakeに特定のサブディレクトリにアクセスし、このディレクトリ内のプロジェクトファイルにmakefileを生成し、makeを呼び出すmakefileを生成するように伝えます.
    このテンプレートではシステム変数SUBDIRSが1つしか認識できない.この変数には、処理するプロジェクトファイルを含むサブディレクトリのリストが含まれています.このプロジェクトファイルの名前はサブディレクトリと同じ名前で、qmakeが見つけることができます.たとえば、サブディレクトリに「myapp」がある場合は、このディレクトリのプロジェクトファイルをmyapp.proと呼ぶべきです.
    CONFIG変数
    構成変数は、コンパイラが使用するオプションと接続するライブラリを指定します.構成変数には何でも追加できますが、qmakeで認識できるのは以下のオプションのみです.
    次のオプションでは、どのコンパイラフラグを使用するかを制御します.
  • release-アプリケーションはreleaseモードでアセンブリされます.「debug」が指定されている場合は無視されます.
  • debug-アプリケーションはdebugモードで連結されます.
  • warn_on-コンパイラはできるだけ多くの警告情報を出力します.warn_offが指定されている場合は無視されます.
  • warn_off-コンパイラはできるだけ少ない警告情報を出力します.

  • 次のオプションでは、連結するライブラリ/アプリケーションのタイプを定義します.
  • qt-アプリケーションはQtアプリケーションであり、Qtライブラリが接続されます.
  • thread-アプリケーションはマルチスレッドアプリケーションです.
  • x 11-アプリケーションはX 11アプリケーションまたはライブラリです.
  • windows-「app」テンプレートのみ:アプリケーションはWindowsの下のウィンドウアプリケーションです.
  • console-appテンプレートでのみ使用されます.アプリケーションはWindowsのコンソールアプリケーションです.
  • dll-libテンプレートでのみ使用されます.ライブラリは共有ライブラリ(dll)です.
  • staticlib-libテンプレートでのみ使用されます.ライブラリは静的ライブラリです.
  • plugin-libテンプレートにのみ使用されます.ライブラリはプラグインであり、dllオプションを有効にします.

  • たとえば、Qtライブラリを使用してアプリケーションをデバッグ可能なマルチスレッドアプリケーションに結合したい場合は、プロジェクトファイルに次の行があります.
        CONFIG += qt thread debug

    「+=」を使用しなければなりません.「=」を使用しないでください.そうしないと、qmakeはコンパイルされたQtライブラリのタイプが得られないなど、連編Qtの設定を正しく使用できません.