Qt のクロスコンパイル

このページでは、Qt をクロスコンパイルするための一般的な手順と要件について説明します。

単にホスト Qt をビルドする方法を探している場合は、Qt のホストビルドを作成する を参照してください。

用語と定義

クロスコンパイルとは、ホストプラットフォームとは異なるターゲットプラットフォーム用に設定し、ビルドすることを意味します。

ホストとはQt をビルドするコンピュータのことで、例えば Linux マシンのことです。ターゲットとは、Qt をビルドするデバイスのことで、例えば Android タブレットです。

Qt をビルドする際には、コードの生成やその他の処理を行うツールがいくつか実行されます。これらのツールはホスト上で実行されるため、ホストツールと呼ばれます。これらのホストツールは Qt のホストビルドの一部です。このホストビルドは、ターゲットプラットフォーム用に Qt をビルドするための前提条件として準備する必要があります。

Qtの最小ホストビルドとは、Qtのターゲットビルドを作成するのに必要なホストツールだけを含むQtのホストビルドのことです。

QtはCMakeでビルドされ、CMakeはクロスコンパイル時にツールチェインファイルを必要とします。このファイルには、ターゲットプラットフォームと使用するツールチェーンに関する情報が含まれています。クロスコンパイルについてはCMakeのドキュメントを参照してください。

いくつかのターゲットプラットフォームでは、Qt configure スクリプトが自動的にファイルを選択します。詳細については、目的のターゲットプラットフォームに特化したドキュメントを参照してください。

いくつかのターゲットプラットフォームでは、sysroot を指定する必要があります。これは、アプリケーションのコンパイルとリンクに必要なすべてのファイルとライブラリを含む自己完結型の環境です。

Qt のホストビルドに関する一般的な注意事項

ターゲットの Qt をビルドする際、mocrccqmlcachegenqsb などのツールが呼び出されます。例えば、x64マシンでARM用にクロスコンパイルする場合、同じQtバージョンのローカルのx64ビルドを最初に利用可能にする必要があります。このQtビルドへのパスは、configure またはcmake に渡されます。 Qtのホストビルドは、通常、ホストデバイス用のQtの通常のビルドです。

Qt のホストビルドには、ターゲットプラットフォーム用に Qt をビルドするために必要なホストツールがすべて含まれていなければなりません。例えば、ターゲットの Qt がQt Quick をサポートしている場合、ホスト Qt にはシェーダーコンパイラであるqsb が含まれていなければなりません。ホストの Qt が必要なツールをすべて提供していることを確認する簡単な方法は、ターゲットで必要な Qt モジュールをホストでビルドすることです。

ターゲットの Qt が共有でビルドされている場合、ホストの Qt を静的にビルドすることは避けてください。Qt の静的ビルドには、共有 Qt のビルドに必要なすべてのツールが含まれていない可能性があります。

非互換性の問題を避けるために、ホストとターゲットの Qt に同じバージョンの Qt を使用してください。

Qt のホストビルドの作成

そのプラットフォーム用の Qt のビルド方法の詳細については、目的のホストのドキュメントを参照してください。

最小限のホスト Qt をビルドするには、Qt を設定した後に以下のビルドコマンドを使用します:

mkdir ~/QtHostBuild
cd ~/QtHostBuild
~/QtSource/configure -developer-build -nomake tests
cmake --build . --target host_tools

このビルドはホストプラットフォームの Qt プログラムを開発するのには適していませんが、Qt のクロスビルドに必要なツールは含まれています。

クロスコンパイル時の Qt のホストビルドの指定

クロスコンパイルする場合、ターゲットの Qt をホストの Qt の場所に指定する必要があります。

configure スクリプトを使用する場合は

~/QtSource/configure -qt-host-path ~/QtHostBuild ...target-specific options...

CMake を直接使用する場合は

cmake -S ~/QtSource -DQT_HOST_PATH=~/QtHostBuild ...target-specific options...

ターゲット固有のオプションについては、目的のターゲットのドキュメントを参照してください。

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