Qt 設定オプション

configureは、Qt のカスタムバージョンをソースからビルドするためのコマンドラインツールです。メインの Qt ソースディレクトリの一部です。

Qt 6 以降、configure はcmake のラッパーです。CMake を直接起動することもできます。configure は追加のエラーチェックと Qt 5 との互換性を提供します。

このページでは configure のオプションのいくつかを説明します。オプションの完全なリストについては、configure -hコマンドを入力してください。

注意: 特に断りのない限り、このページのコマンドは Linux プラットフォーム用です。macOSとWindowsでは、PATHとディレクトリ構造が異なるため、コマンドも異なります。また、Windowsシステムでは、configureスクリプトはconfigure.batと呼ばれます。

configureワークフロー

configureは、CMake、コンパイラ、必要なビルドツールがすぐに利用できるビルド環境で呼び出す必要があります。Building Qt Sourcesに、プラットフォームごとの依存関係が記載されています。

そのような環境を設定した後、典型的なワークフローは、別のビルドディレクトリを作成し、まずconfigureを実行し、次にQtをビルドし、Qtをインストールすることです:

~/qt-source/configure
cmake --build . --parallel
cmake --install .

configureのフラグを変えてみたり、複数回configureを実行してみたくなるかもしれません。CMakeはconfigureオプションと環境に関する情報をCMakeCache.txtというファイルにキャッシュします。キャッシュされた情報なしでやり直したい場合は、このファイルを削除してください。

ソース、ビルド、インストールディレクトリ

ソースディレクトリには、ソースパッケージまたは git リポジトリから取得したソースコードが格納されています。ビルド・ディレクトリには、ビルド・システム・ファイル、オブジェクト・ファイル、その他の中間ファイルなどのビルド関連ファイルが格納されます。installディレクトリには、システムまたはアプリケーションで使用するバイナリやライブラリがインストールされます。

シャドウビルドを行い、-prefixオプションを使用することで、これらのディレクトリを分けておくことをお勧めします。これにより、Qt のソースツリーを、ビルドの成果物やバイナリからクリーンに保つことができます。この方法は、同じソースツリーから複数のビルドを行いたい場合に非常に便利です。シャドウビルドするには、別のディレクトリから configure を実行します:

mkdir ~/qt-build
cd ~/qt-build
~/qt-source/configure -prefix /opt/Qt6

prefixオプションを付けてconfigureを実行すると、Qtのバイナリとライブラリが別のディレクトリにインストールされます。

例、テスト、ツール

デフォルトでは、configure は Qt のライブラリとツールだけを設定します。make examples-make testsを使用すると、Qt に付属するサンプルやテストもビルドできます:

~/qt-source/configure -make examples -make tests

また、デフォルトではビルドされませんが、サンプルやテスト、ツールをビルドするように Qt を設定することもできます。CMake 変数QT_BUILD_EXAMPLES_BY_DEFAULTQT_BUILD_TESTS_BY_DEFAULTQT_BUILD_TOOLS_BY_DEFAULTを OFF に設定すると、それぞれのパーツはcmake --build . によってビルドされません。その代わりに、CMake は個別のターゲットを生成し、それを個別にビルドすることができます。

ここでは、Qt ライブラリとツール、そしてNotePad Example をビルドします:

~/qt-source/configure -make examples -- -D QT_BUILD_EXAMPLES_BY_DEFAULT=OFF
cmake --build . --parallel
cmake --build . --parallel --target notepad

Note: -developer-build オプションは、デフォルトでテストをビルドします。以下のDeveloper Buildsも参照してください。

ビルドの設定

Qt ライブラリやツールは様々な方法でビルドすることができます。

デバッグビルドとリリースビルド

-releaseはコンパイラにコードの最適化を指示し、Qt とそのツールと共に追加のデバッグシンボルを提供しません。

-debugは、Qtとそのツールのデバッグを容易にするために、いくつかの最適化をスキップします。このオプションはデバッグシンボルの生成も可能にし、デバッガでビルドされたライブラリのコードや状態を検査できるようにします。

最後に、-debug-and-release を使用すると、Qt ライブラリのデバッグ版とリリース版の両方を一度にビルドできます。これは Windows 用のビルドを設定した場合のみサポートされます。

さらに、設定を微調整するためのオプションがあります:

  • -force-debug-info:デバッグ情報を含むリリースビルドを作成します。
  • -separate-debug-info:デバッグ情報を別のファイルに抽出します。
  • -optimize-size:リリース・ビルドを速度ではなくサイズに最適化します。

静的ビルドと共有ビルド

Qt モジュールは独立したライブラリとしてビルドすることができ、実行ファイルがリンクされ、起動時(Qt ライブラリの場合)または実行時(Qt プラグインの場合)にロードされます。これは共有ビルドと呼ばれ、ほとんどのプラットフォームでデフォルトの設定です。対応する configure オプションは-shared です。

また、実行バイナリがリンク先のすべての Qt モジュールと必要なすべての Qt プラグインを含むように Qt をビルドすることもできます。これは静的ビルドと呼ばれ、-staticオプションで設定するときに選択できます。

CMake ジェネレーター

設定時に、CMake ジェネレーターを選択できます。CMakeはQtで使用できないジェネレータをサポートしていることに注意してください。そのため、configureは自動的にジェネレータを選択します。

ninjaの実行ファイルがある場合、configureは常にninjaジェネレータとビルドツールを使用します。Ninjaはクロスプラットフォームで、機能が豊富で、パフォーマンスも高く、すべてのプラットフォームで推奨されています。他のジェネレータでも動作するかもしれませんが、公式にはサポートされていません。

モジュールと機能

Qtのソースコードは、サブモジュールと呼ばれるいくつかのトップレベルのディレクトリで構成されています。例えば、qtbaseqtdeclarativeqtmultimedia などです。これらのサブモジュールの中には、さまざまなQtモジュールのソースコードがあります。Qt CoreQt QuickQt Multimediaはそのような Qt モジュールの例です。

注意: 多くのサブモジュール(トップレベルのソースディレクトリ)は、実装しているQtモジュールと同じ名前を持っていますが、必ずしもそうではありません。例えば、qtdeclarative にはQt QuickQt Qml、そして様々な関連モジュールが含まれています。それぞれのディレクトリにある README.md ファイルを参照し、概要を把握してください。

ビルド時間を制限するために、サブモジュールを明示的に含めたり除外したりすることができます。さらに、各 Qt モジュールには、明示的に有効または無効にできる機能があるかもしれません。

Qt サブモジュールのインクルードと除外

configure-skipオプションは、Qt のビルドからサブモジュール(トップレベルのソースディレクトリ)を除外するために使用します。サブモジュールを除外すると、そのサブモジュール内のすべてのQt モジュールが除外されます。qtwayland サブモジュールにはQt Wayland CompositorとQt Wayland QPAプラグインの両方が含まれています。そのため、-skip qtwayland をconfigureオプションとして指定すると、両方のQtモジュールが除外されます。

~/qt-source/configure -skip qtwayland

configuresubmodulesオプションを使用すると、リストされたサブモジュールとその依存関係のみをビルドするように設定できます。例えば、qtmultimedia サブモジュールを指定すると、Qt Multimediaとその依存関係すべてがビルドに含まれます。複数のサブモジュールはカンマで区切ることができます。

~/qt-source/configure -submodules qtmultimedia,qtactiveqt

機能のインクルード/除外

feature -<feature>オプションと-no -feature-<feature>オプションは、それぞれ特定の機能を含めたり除外したりします。

例えば、-no-feature-accessibilityconfigure オプションを使うと、Qt のAccessibilityサポートを無効にできます:

~/qt-source/configure -no-feature-accessibility

configure -list-featuresを使うと、コマンドラインに利用可能な機能の一覧が表示されます。configure -list-features を使うと、コマンドラインに利用可能なすべての機能のリストが表示されます。機能は他の機能に依存することがあるので、ある機能を無効にすると他の機能に副作用があるかもしれないことに注意してください。

サードパーティライブラリ

Qt のソースパッケージにはサードパーティのライブラリが含まれています。Qt がライブラリのシステムのバージョンを使用するか、バンドルされているバージョンを使用するかを設定するには、設定するライブラリ名の前に-systemまたは-qtを渡します。

以下の表は、いくつかのサードパーティオプションをまとめたものです:

ライブラリ名Qt にバンドルシステムにインストール
zlib-qt-zlib-system-zlib
libjpeg-qt-libjpeg-システム-libjpeg
libpng-qt-libpng-システム-libpng
フリータイプ-qt-freetype-システムフリータイプ
PCRE-qt-pcre-システム PCRE
HarfBuzz-NG-qt-harfbuzz-system-harfbuzz

qt の代わりに-no を使うことで、これらのライブラリのサポートを無効にすることもできます。

Qt 6 の configure は CMake に依存してサードパーティライブラリを探します。これは、様々なシステムパスをチェックすることで行います。他の場所にライブラリをインストールした場合は、CMAKE_PREFIX_PATH変数を設定または拡張することで、CMakeにそれを知らせることができます。

オプションの完全なリストについては、configure -helpのヘルプを参照してください。

SSL

Qt Network は Secure Sockets Layer (SSL) の通信をサポートするように設定できますが、実際のアルゴリズムは実装していません。代わりに他のライブラリを利用する必要があります。

Windows では、Qt はこの目的のためにシステムの Secure Channel ライブラリを使用できます(configure オプション-schannel)。macOS と iOS では、Qt は SecureTransport API を使用するように設定できます(configure オプション-securetransport)。

ほぼすべてのターゲットプラットフォームで動作する、最も機能的に完全なサポートは、OpenSSL ツールキットによって提供されます (option-openssl)。Qt は OpenSSL 1.1.1 以降を必要とします。

Qtは3つの方法でOpenSSLを使うように設定できます:

  • Qt Network は、OpenSSL ライブラリ (DLL) を最初に必要になったときに、実行時にロードします。見つからない場合、アプリケーションの実行は継続されますが、SSL通信の処理に失敗します。これは configure オプション-openssl-runtime を使用することで有効になります。
  • Qt Network は OpenSSL ライブラリに対してリンクします。ロード時に見つからない場合、アプリケーションの起動に失敗します。これは configure オプション-openssl-linked を使用することで有効になります。
  • Qt Network は OpenSSL ライブラリの静的バージョンに対してコンパイルし、OpenSSL は Qt Network ライブラリの一部になります。これは configure オプションopenssl-linkedを使用し、OPENSSL_USE_STATIC_LIBS変数をON に設定することで有効になります。

OpenSSL が標準の場所にインストールされておらず、configure で見つからない場合は、CMake 変数OPENSSL_ROOT_DIRを設定します。

SSL をサポートした Qt に関する詳しい説明はSecure Sockets Layer (SSL) Classesを参照してください。

クロスコンパイルオプション

クロスプラットフォームの開発とデプロイメント用に Qt を設定するには、まずホストマシンの Qt バージョンが一致している必要があります。また、ターゲットプラットフォーム用の開発ツールチェーンをセットアップする必要があります。この設定は、サポートされているプラットフォームによって異なります。

一般的なオプションは以下の通りです:

  • -external-hostbindir- このマシン用にビルドされた Qt ツールへのパス。
  • -device- qmakeコンパニオン・ファイルのdevice/mkspecを選択します。
  • -device-option- qmake の追加変数を設定します。

注意: デスクトップ以外のターゲット用のツールチェーンには、Qt を設定する必要がある、いわゆるsysrootが付属していることがよくあります。

開発者向けビルド

-developer-buildconfigure オプションは、Qt 自体の開発用にビルドを最適化する便利なオプションです。顧客に出荷する Qt のビルドには使用しないでください。

開発者ビルドのライブラリは標準ビルドよりも多くのエクスポートシンボルを含み、すべての Qt コードはより高い警告レベルでコンパイルされます。また、ビルドディレクトリのデフォルトのプレフィックスを変更することで、テスト前に Qt をインストールする必要がなくなります。

既存のビルドの再設定

Qt ビルドシステムには、既存の Qt ビルドを別の configure オプションで再設定するための基本的なサポートがあります。

既存のビルドを再設定する最も安全な方法は、configure に-redoオプションを渡すことです。これにより、ビルドのCMakeCache.txtファイルが削除され、再設定が比較的安全な状態で行えるようになります。最初の configure フラグは、再設定されたビルドにも適用されます。

プラットフォーム固有のオプション

以下のページでは、Qt を特定のプラットフォームで開発するための設定方法について説明します:

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権はそれぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。