MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの設定 - qmakeのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの設定 - qmake
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ==== qmakeとは ==== qmakeは、異なるプラットフォーム間での開発プロジェクトのビルドプロセスを簡略化して、ソフトウェア、ライブラリ、その他コンポーネントのビルドプロセスを管理する。<br> 各Qtプロジェクトファイルの情報を元にMakefileの生成を自動化して、各Makefileを作成するために必要な情報を簡便にすることができる。<br> <br> また、Qtで記述されているかどうかに関わらず、あらゆるソフトウェアプロジェクトに使用することができる。<br> また、qmakeには、Qtライブラリを使用した開発を支援するための機能があり、mocやuicのビルドルールも含まれる。<br> <br> 開発者がQtプロジェクトファイルを変更することなく、Visual Studio向けのプロジェクトを生成することも可能である。<br> <br> ==== Qtプロジェクトの記述 ==== qmakeは、Qtプロジェクトファイル内の情報を使用して、各Qtプロジェクトをビルドするために必要な全てのコマンドを含むMakefileを生成する。<br> Qtプロジェクトファイルには、ソースファイル、ヘッダファイル、設定情報、ソフトウェア固有の詳細情報(リンクするライブラリの追加リストや使用するインクルードパスの追加リスト)が含まれる。<br> <br> Qtプロジェクトファイルには、コメント、変数宣言、組み込み関数、簡単な制御構造等、様々な要素を含めることができる。<br> <br> 実行ファイルプロジェクトまたはライブラリプロジェクトのテンプレートを使用して、ビルドプロセスを調整するための設定オプションを指定することもできる。<br> 詳細を知りたい場合は、「プロジェクトタイプのビルド」を参照すること。<br> <br> また、qmakeを使用してQtプロジェクトファイルを生成することもできる。<br> qmakeのコマンドラインオプションの詳細を知りたい場合は、「qmakeの実行」を参照すること。<br> <br> qmakeの設定で、多くのクロスプラットフォームプロジェクトを扱うことができる。<br> ただし、プラットフォーム固有の変数を使用することが必要な場合がある。<br> 詳細を知りたい場合は、「プラットフォーム」を参照すること。<br> <br> ==== Qtプロジェクトのビルド ==== 多くのプロジェクトでは、Qtプロジェクトのトップレベルディレクトリにおいて、<code>qmake</code>コマンドを実行するだけでよい。<br> その後、<code>make</code>コマンドを実行することにより、Makefileに従ってプロジェクトをビルドすることができる。<br> <br> qmakeがビルドプロセスを設定する時に使用する環境変数の詳細については、「qmakeの設定」を参照すること。<br> <br> ==== サードパーティ製ライブラリの使用 ==== サードパーティ製ライブラリの詳細は、「サードパーティ製ライブラリを使用する」を参照すること。<br> <br> ==== ヘッダファイルのプリコンパイル ==== 大規模なプロジェクトでは、プリコンパイルされたヘッダファイルを使用することにより、ビルドプロセスを高速化することが可能である。<br> 詳細を知りたい場合は、「プリコンパイルされたヘッダファイルの使用」を参照すること。<br> <br><br> == Qtプロジェクトファイルの基本的な変数 == ==== CONFIG ==== 変数<code>CONFIG</code>は、Qtプロジェクトの設定とコンパイラのオプションを指定する。<br> 変数<code>CONFIG</code>の値は、qmakeが内部で認識して、特別な意味を持つ。<br> <br> 下表に、コンパイラとリンカのフラグを制御する変数<code>CONFIG</code>で使用できる値を示す。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | 変数CONFIGに指定できるオプション ! style="background-color:#66CCFF;" | 説明 |- | release || Qtプロジェクトをリリースモードでビルドする。<br><code>debug</code>も指定した場合は、最後に指定されたものが有効になる。 |- | debug || Qtプロジェクトをデバッグモードでビルドする。 |- | debug_and_release || デバッグモードとリリースモードの両方でビルドする。 |- | debug_and_release_target || この値はデフォルトで設定されている。<br>もし、<code>debug_and_release</code>も同時に指定している場合、デバッグとリリースのビルドは別々のdebugとreleaseディレクトリに出力される。 |- | build_all || <code>debug_and_release</code>も同時に指定している場合、デフォルトでデバッグとリリースの両方のモードでビルドされる。 |- | autogen_precompile_source || Qtプロジェクトファイルで指定したプリコンパイルされたヘッダファイルを含む.cppファイルを自動的に生成する。 |- | ordered || 変数<code>SUBDIRS</code>を使用する場合、<code>ordered</code>オプションはリストされたディレクトリが与えられた順番で処理するように指定する。<br><br><u>※注意</u><br><u><code>ordered</code>オプションの使用は非推奨である。</u><br><u>代わりに、変数<code>SUBDIRS</code>を使用して、依存関係を指定する。</u> |- | precompile_header || プリコンパイルされたヘッダファイルを使用する。 |- | precompile_header_c<br>(Visual C++のみのオプション) || C言語のプリコンパイルされたヘッダファイルを使用する。 |- | warn_on || コンパイラはできるだけ多くの警告を出力する。<br><code>warn_off</code>オプションも同時に指定した場合は、最後に指定したものが有効になる。 |- | warn_off || コンパイラは警告をできるだけ出力しない。 |- | exceptions || デフォルトで有効に設定されている。<br>例外サポートが有効になる。 |- | exceptions_off || 例外サポートを無効にする。 |- | ltcg || デフォルトで無効に設定されている。<br>リンクタイムコード生成を有効にする。 |- | rtti || 未指定の場合は、コンパイラのデフォルトが使用される。<br>RTTIサポートを有効にする。 |- | rtti_off || 未指定の場合は、コンパイラのデフォルトが使用される。<br>RTTIサポートを無効にする。 |- | stl || 未指定の場合は、コンパイラのデフォルトが使用される。<br>STLサポートを有効にする。 |- | stl_off || 未指定の場合は、コンパイラのデフォルトが使用される。<br>STLサポートを無効にする。 |- | thread || スレッドサポートを有効にする。<br>変数<code>CONFIG</code>に<code>qt</code>が含まれている場合は、デフォルトで有効に設定されている。 |- | no_utf8_source || QtプロジェクトのソースファイルにUTF-8エンコーディングを使用せずに、コンパイラのデフォルトの設定を使用する。 |- | hide_symbols || 未指定の場合は、コンパイラのデフォルトが使用される。<br>バイナリ内のシンボルのデフォルトの可視性を非表示に設定する。 |- | depend_includepath || デフォルトで有効に設定されている。<br>変数<code>INCLUDEPATH</code>の値を変数<code>DEPENDPATH</code>に付加することを有効にする。 |- | lrelease || 変数<code>TRANSLATIONS</code>と変数<code>EXTRA_TRANSLATIONS</code>にリストされている全てのファイルに対して、<code>lrelease</code>コマンド(翻訳)を実行する。<br>変数<code>QMAKE_LRELEASE_FLAGS</code>に<code>lrelease</code>コマンドのオプションを記述する。<br><br><code>embed_translations</code>オプションが未指定の場合、生成されたQMファイルを変数<code>QM_FILES_INSTALL_PATH</code>にインストールする。 |- | embed_translations || 変数<code>QM_FILES_RESOURCE_PREFIX</code>で指定したディレクトリに、<code>lrelease</code>コマンドの実行により生成された翻訳ファイルを実行ファイルに埋め込む。<br><code>lrelease</code>オプションも設定する必要がある。 |} </center> <br> ==== TEMPLATE ==== Qtプロジェクトファイルは、原則として、1ファイル1ターゲットである。<br> 変数<code>TEMPLATE</code>は、Qtプロジェクトの種類を指定する。<br> <br> * ソフトウェア *: app * ライブラリ *: lib * サブディレクトリ *: subdir * それ以外のプロジェクト *: <br> <br> ==== TARGET ==== ターゲットファイルの名前を指定する。<br> 未指定の場合は、Qtプロジェクトファイルのベースネームが使用される。<br> # 以下の例では、UnixではMySoftware、WindowsではMySoftware.exeという名前の実行ファイルを生成する TARGET = MySoftware <br> ==== SOURCES ==== 変数<code>SOURCES</code>は、Qtプロジェクトに含まれる全てのソースコードファイルの名前を指定する。<br> 例. SOURCES += main.cpp \ mainwindow.cpp <br> ==== HEADERS ==== 変数<code>HEADERS</code>は、Qtプロジェクトのヘッダファイルの名前を指定する。<br> <br> qmakeは、ヘッダファイルに定義しているクラスがmocを必要とするかどうかを自動的に検出した後、<br> mocが必要な場合はmocファイルを生成して、リンクするために適切な依存関係とファイルをQtプロジェクトに追加する。<br> HEADERS += main.h \ mainwindow.h <br> ==== SUBDIRS ==== subdirsテンプレートと同時に使用する場合、ビルドする必要のあるQtプロジェクトの一部を含む全てのサブディレクトリまたはQtプロジェクトファイルの名前を指定する。<br> この変数で指定した各サブディレクトリは、それ自身のQtプロジェクトファイルを含んでいる必要がある。<br> <br> 各サブディレクトリ内のQtプロジェクトファイルは、サブディレクトリ自身と同じベースネームを持つ場合、ファイル名を省略することができる。<br> (例えば、サブディレクトリがMySoftwareという名前の場合、そのディレクトリのQtプロジェクトファイルはMySoftware.proという名前の場合)<br> <br> また、任意のディレクトリにあるQtプロジェクトファイルへの相対パスを指定することもできる。<br> ただし、現在のプロジェクトの親ディレクトリとそのサブディレクトリにあるパスだけを指定することを推奨する。<br> <br> <u>依存関係が無い場合では、全てのビルドは変数<code>SUBDIRS</code>に記述した順番(上から順次)に行われる。</u><br> SUBDIRS = MyTool \ MySoftware <br> 各サブディレクトリを特定の順序で構築する必要がある場合、関連する変数<code>SUBDIRS</code>の要素に<code>.depends</code>修飾子を使用する。<br> <br> 以下の例では、MyLibraryがMySoftwareの前にビルドされて、MySoftwareがMyTestの前にビルドされることを保証している。<br> MyDocumentは、他のサブディレクトリと並行してビルドすることができるため、ビルドプロセスを高速化することができる。<br> SUBDIRS += MySoftware \ MyLibrary \ MyTest \ MyDocument MySoftware.depends = MyLibrary MyTest.depends = MySoftware <br> 複数の依存関係を指定することもでき、それらは全て依存するターゲットの前にビルドされる。<br> <br> <u>※注意</u><br> <u>変数<code>CONFIG</code>に<code>ordered</code>オプションを使用することは非推奨である。</u><br> <u>これは、マルチコアのビルドを遅くする可能性がある。</u><br> <br> ビルド順を定義する以外に、変数<code>SUBDIRS</code>に追加の修飾子を付加することにより、変数<code>SUBDIRS</code>のデフォルトの動作を変更することが可能である。<br> 下表に、サポートされている修飾子を示す。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ 変数<code>SUBDIRS</code>に指定できる修飾子 |- ! style="background-color:#66CCFF;" | 修飾子 ! style="background-color:#66CCFF;" | 説明 |- | .subdir || 変数<code>SUBDIRS</code>の値の代わりに、指定されたサブディレクトリを使用する。 |- | .file || サブプロジェクトプロファイルを明示的に指定する。<br>この時、<code>.subdir</code>修飾子と同時に使用できない。 |- | .depends || このサブプロジェクトは指定されたサブプロジェクトに依存することを示す。(複数可) |- | .makefile || サブプロジェクトのMakefileを指定する。<br>Makefileを使用するプラットフォームでのみ利用可能である。 |- | .target || このサブプロジェクトに関連するMakefileターゲットに使用されるベース文字列を指定する。<br>Makefileを使用するプラットフォームでのみ利用可能である。 |} </center> <br> 以下の例では、2つのサブディレクトリを定義して、各サブディレクトリが変数<code>SUBDIRS</code>で指定したディレクトリとは異なるディレクトリに存在しており、<br> サブディレクトリの1つが他のものより先に構築されなければならないとする。<br> (例では、MySoftwareはappディレクトリ、MyLibraryはlibディレクトリに存在する) SUBDIRS += MySoftware \ MyLibrary MySoftware.subdir = app MySoftware.depends = MyLibrary MyLibrary.subdir = lib <br><br> == コンパイラの設定 == GCCやG++コンパイラ等を標準以外に変更する場合、プロジェクトファイル(.pro拡張子)に以下の設定を追記する。<br> <br> * QMAKE_CC *: C言語のソースコードを含むプロジェクトをビルドする時に使用されるC言語のコンパイラを指定する。 *: <code>QMAKE_CC = /<GCCのインストールディレクトリ>/bin/gcc-10.2</code> *: また、環境変数PATHにGCCやG++等のパスを設定している場合、以下のように、コンパイラのファイル名だけで指定することができる。 *: <code>QMAKE_CC = gcc-10.2</code> *: <br> *: <code>QMAKE_CC</code>オプションは、<code>CONFIG</code>オプションよりも上に記述する。 <br> * QMAKE_CXX *: C++言語のソースコードを含むプロジェクトをビルドする時に使用されるC++言語のコンパイラを指定する。 *: <code>QMAKE_CXX = /<GCCのインストールディレクトリ>/bin/g++-10.2</code> *: また、環境変数PATHにGCCやG++等のパスを設定している場合、コンパイラのファイル名だけで指定することができる。 *: <code>QMAKE_CXX = g++-10.2</code> *: <br> *: <code>QMAKE_CXX</code>オプションは、<code>CONFIG</code>オプションよりも上に記述する。 <br> * QMAKE_CFLAGS *: プロジェクトをビルドするためのC言語のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 *: デバッグモードとリリースモードの固有のフラグは、それぞれ変数QMAKE_CFLAGS_DEBUGと変数QMAKE_CFLAGS_RELEASEを変更することで調整できる。 *: <br> *: 例えば、C11、C17、C20の規格を使用する場合は、<code>QMAKE_CFLAGS += -std=c11</code>や<code>QMAKE_CFLAGS += -std=c17</code>と記述する。 <br> * QMAKE_CFLAGS_DEBUG *: デバッグビルドのC言語のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_CFLAGS_RELEASE *: リリースビルドのC言語のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_CXXFLAGS *: プロジェクトをビルドするためのC++のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 *: デバッグモードとリリースモードの固有のフラグは、それぞれ変数QMAKE_CXXFLAGS_DEBUGと変数QMAKE_CXXFLAGS_RELEASEを変更することで調整できる。 *: <br> *: 例えば、C++14、C++17、C++20の規格を使用する場合は、<code>QMAKE_CXXFLAGS += -std=c++14</code>や<code>QMAKE_CXXFLAGS += -std=c++17</code>と記述する。 <br> * QMAKE_CXXFLAGS_DEBUG *: デバッグビルドのC++のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_CXXFLAGS_RELEASE *: リリースビルドのC++のコンパイラフラグを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_LINK *: アプリケーションベースのプロジェクトを構築する時に使用するリンカを指定する。 *: 環境変数PATHに含まれるパス上にある場合、リンカファイルのファイル名のみを指定することができる。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br><br> == インクルードの設定 == * INCLUDEPATH *: プロジェクトに必要な追加のインクルードディレクトリのリストである。 *: プロジェクトのコンパイル時に検索するインクルードディレクトリ(<code>#include <ヘッダファイル></code>)を指定する。 *: <br> *: 例 : *: <code>INCLUDEPATH += /home/user/include</code> *: <br> *: スペースを含むパスを指定するには、以下のように記述する。 *: UNIX系OSの場合 <code>INCLUDEPATH += "/home/user/extra headers"</code> *: Windowsの場合 <code>INCLUDEPATH += "C:/myincludes/extra headers"</code> <br> * DEPENDPATH *: ソフトウェアまたはライブラリの依存関係を解決するため、<code>qmake</code>コマンドがスキャンするインクルードディレクトリパスのリストを指定する。 *: DEPENDPATHは、ソースコードに<code>#include</code>で指定したヘッダファイルにおいて、<code>qmake</code>コマンドがクロールする時に使用される。 *: 特に、<code>Q_OBJECT</code>からのmocファイルの依存関係を解決するために、DEPENDPATHが必要となる。 <br> * QMAKE_INCDIR *: INCLUDEPATHに追加されるシステムヘッダのパスのリストを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br><br> == ライブラリの設定 == * LIBS *: プロジェクトにリンクするライブラリのリストを指定する。 *: UNIX系OSにおいて、<code>-l</code>(ライブラリ)フラグと<code>-L</code>(ライブラリパス)フラグを使用する場合、 *: qmakeはWindowsでライブラリを正しく処理する。(ライブラリのフルパスをリンカに渡す) *: <code>-l</code>で指定されているディレクトリを見つけるには、ライブラリが存在している必要があります。 *: 例 : *: UNIX系OSの場合 <code>LIBS += -L/usr/local/lib -lmath</code> *: Windowsの場合 <code>LIBS += c:/mylibs/math.lib</code> *: <br> *: また、スペースを含むパスを指定するには、以下のように記述する。 *: UNIX系OSの場合 <code>LIBS += "-L/usr/local lib/lib" -lmath</code> *: Windowsの場合 <code>LIBS += "C:/mylibs lib/math.lib"</code> *: <br> *: 標準では、LIBSに格納されているライブラリのリストは、使用される前に一意の名前のリストに縮小される。 *: この動作を変更するには、変数CONFIGに<code>no_lflags_merge</code>オプションを追加する。 *: <code>CONFIG += no_lflags_merge</code> <br> * LIBS_PRIVATE *: プロジェクトにプライベートリンクするライブラリのリストを指定する。 *: この変数の動作はLIBSと同じであるが、UNIX用の共有ライブラリプロジェクトがリンクインターフェイスで、これらの依存関係を公開しない点が異なる。 *: <br> *: 例えば、あるプロジェクトがライブラリA(ライブラリAは、ライブラリBにプライベートに依存)に依存している場合、 *: プロジェクトからもライブラリBを直接使用する場合、ライブラリBに明示的にリンクする必要があるということである。 *: 言い換えると、プライベートにリンクされたライブラリは、ビルド時に推移的に公開されない。 <br> * QMAKE_LIBDIR *: 全てのプロジェクトのライブラリ検索パスのリストを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 *: プロジェクトファイルで追加のライブラリ検索パスを指定するには、LIBSを使用する。 *: <code>LIBS += -L/path/to/libraries</code> <br> * QMAKE_LIBDIR_POST *: 全てのプロジェクトのシステムライブラリ検索パスのリストを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_LIBDIR_FLAGS *: この変数は、UNIX系OSでのみ使用される。 *: 接頭辞<code>-L</code>が付いた全てのライブラリディレクトリの場所を指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 <br> * QMAKE_LIBS *: 各プロジェクトがリンクする必要のある追加のライブラリを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 *: プロジェクトファイルでライブラリを指定するには、LIBSを使用する。 <br> * QMAKE_LIBS_PRIVATE *: 各プロジェクトがリンクする必要のある追加のプライベートライブラリを指定する。 *: この変数の値は、qmakeまたはqmake.confによって処理され、変更する必要はほとんど無い。 *: プロジェクトファイルでプライベートライブラリを指定するには、LIBS_PRIVATEを使用する。 <br><br> == インストールの設定 == * INSTALLS *: make installコマンドまたは同様のインストール手順が実行される場合、インストールされるリソースのリストを指定する。 *: リスト内の各項目は、インストールされる場所に関する情報を提供する属性を指定する。 *: この変数は、組み込みデバイスに展開される追加ファイルを指定するためにも使用される。 *: <br> *: 例えば、変数target.pathは、ビルドターゲットがインストールされる場所を示し、 *: 変数INSTALLSは、インストールされる既存のリソースのリストにビルドターゲットを追加する。 *: <code>target.path += $$[QT_INSTALL_PLUGINS]/imageformats</code> *: <code>INSTALLS += target</code> *: <br> *: 下表に、変数INSTALLSにおけるいくつかの値を記載する。 <center> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | 値 ! style="background-color:#00ffff;" | 説明 |- | no_check_exist || この値が設定されていない場合、qmakeはインストールするファイルが実際に存在するかどうかを確認する。<br>これらのファイルが存在しない場合、qmakeはインストールルールを作成しない。<br>qdocによって作成されたHTMLファイル等、ビルドプロセスの一部として生成されたファイルをインストールする必要がある場合は、<br>この値を使用する。 |- | nostrip || この値が設定されている場合、UNIXのストリップ機能はオフになり、デバッグ情報はバイナリに残る。 |- | executable || この値が設定されている場合、UNIX系OSでは、実行可能フラグが設定される。 |- | no_build || make installコマンドを実行した時、まだプロジェクトのビルドが無い場合、プロジェクトをビルドされた後にインストールされる。<br>この動作を望まない場合は、この値を設定して、ビルドターゲットがインストールターゲットへの依存関係として追加されないようにする。 |- | no_default_install || プロジェクトにトップレベルのプロジェクトターゲットが存在する場合、make installコマンドを実行すると、全てがインストールされる。<br>ただし、この値が設定されたインストールターゲットがある場合、標準ではインストールされない。<br>明示的に、<code>make install_<file></code>コマンドを実行する必要がある。 |} </center> <br><br> == qDebug関数の出力を抑止する == 標準の設定では、リリースビルドでも<code>qDebug</code>関数の出力が有効になっている。<br> リリースビルドで<code>qDebug</code>関数で出力しないように設定するには、プロジェクトファイル(.pro)に以下を追記する。<br> CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT <br> <code>qInfo</code>関数の出力を抑止する場合、プロジェクトファイル(.pro)に以下を追記する。<br> CONFIG(release, debug|release):DEFINES += QT_NO_INFO_OUTPUT <br> <code>qWarning</code>関数の出力を抑止する場合、プロジェクトファイル(.pro)に以下を追記する。<br> CONFIG(release, debug|release):DEFINES += QT_NO_WARNING_OUTPUT <br> <code>qCritical</code>関数の出力を抑止する場合、プロジェクトファイル(.pro)に以下を追記する。<br> CONFIG(release, debug|release):DEFINES += QT_NO_CRITICAL_OUTPUT <br> <code>qFatal</code>関数の出力を抑止する場合、プロジェクトファイル(.pro)に以下を追記する。<br> CONFIG(release, debug|release):DEFINES += QT_NO_FATAL_OUTPUT <br><br> == デプロイ時のディレクトリの変更 == デプロイ時において、DebugモードとReleaseモードのディレクトリを変更する時、.proファイルに以下の設定を記述する。<br> 以下の設定により、デプロイ時のDebugディレクトリ名は、"プロジェクト名 + d"となる。<br> TARGET_NAME = $${TARGET} if(debug) { TARGET_NAME = $${TARGET}d } <br><br> == インストール時のディレクトリの変更 == <code>qmake</code>コマンド実行時のインストールディレクトリは、<code>target</code>パラメータで指定する。<br> <br> 以下の例では、.proファイルに変数PREFIXを定義して、標準のインストールディレクトリを/usr/localディレクトリとしており、<br> <code>qmake</code>コマンド実行時にPREFIXオプションを使用した場合は、その該当ディレクトリをインストールディレクトリとしている。<br> <syntaxhighlight lang="bash"> # ...略 isEmpty(PREFIX) { PREFIX = /usr/local } #target = Software_Name target.path = $${PREFIX}/ INSTALLS += target # ...略 </syntaxhighlight> <br> 上記の設定を記述した後、<code>qmake</code>コマンドにPREFIXオプションを付加して実行する。<br> qmake ./<Qtプロジェクト>.pro PREFIX=$HOME/InstallSoftware/Software_Name <br><br> == DEFINESマクロ == ==== 応用 : qmakeコマンド実行時にコンパイルするファイルを変更する ==== 以下の例では、qmakeコマンドの実行時において、<code>MACHINE=pinephone</code>オプションを付加することで、QMLファイルを動的に変更することができる。<br> qmake ./〜.pro MACHINE=pinephone <br> # .proファイル # ...略 isEqual(MACHINE, pinephone) { DEFINES += "PINEPHONE" \ } # ...略 <br> <syntaxhighlight lang="c++"> // main.cppファイル int main(int argc, char *argv[]) { // ...略 #ifdef PINEPHONE const QUrl url(QStringLiteral("qrc:/mainPinePhone.qml")); #else const QUrl url(QStringLiteral("qrc:/main.qml")); #endif // ...略 } </syntaxhighlight> <br><br> == messageマクロ == <code>qmake</code>コマンド実行時において、ターミナルにメッセージを出力する場合は、<code>message</code>マクロを使用する。<br> message(<メッセージ内容>) # 例1. "Build Start"と表示する message(Build Start) # 例2. 変数DESTDIRの内容を出力する message(DESTDIR: ($$DESTDIR)) <br><br> == 最適化ビルド == 以下の設定を、qmake時のオプションに指定する、または、.proファイルに追記する。<br> これで、最適化フラグが<code>-O2</code>から<code>-O3</code>に置き換わる。<br> <syntaxhighlight lang="cmake"> CONFIG += optimize_full </syntaxhighlight> <br> 以下の設定は、リリースビルドのみに適用する。<br> <syntaxhighlight lang="cmake"> CONFIG(release, debug|release) { CONFIG += optimize_full } </syntaxhighlight> <br><br> == バージョン情報 == QMakeを使用してビルドされた実行ファイルまたはライブラリに対して、自動的にバージョンを付加することができる。<br> <br> 以下の例では、SVNを使用して現在のバージョンを取得している。(プロジェクトのバージョンを返すコマンドで代用すること)<br> <br> まず、.proファイルに以下の設定を追記する。<br> VERSION = $$system(svn info -r HEAD . | grep 'Changed\ Rev' | cut -b 19-) !isEmpty(VERSION){ VERSION = 0.$${VERSION} } <br> 次に、ソフトウェアのバージョンを設定する。<br> <syntaxhighlight lang="make"> VERSTR = '\"$${VERSION}\'' # バージョンの文字列を引用符で囲む DEFINES += VER=\"$$${VERSTR}\" # バージョン文字列を含むVERマクロの作成 </syntaxhighlight> <br> 上記の設定により、VERマクロを任意のcppファイル / ヘッダファイルで使用することにより、引用符で囲まれたバージョンを取得することができる。<br> <syntaxhighlight lang="c++"> #include <iostream> int main() { std::cout << "VERSION: " << VER << std::endl; return 0; } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの設定 - qmake
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse