はじめに
Qtのソースコードビルドは、構成オプションの多さやコンパイル時間の長さから難易度が高い作業とされています。特にWindows環境において、MSVC2013(Visual Studio 2013)を使用してQt 5.6をビルドし、Windows XPへのターゲット対応やOpenSSL、ICU、WebKitといった主要モジュールを統合する場合、適切な依存関係の解決とビルド設定が不可欠です。
ビルドの基本戦略:シャドウビルドの活用
ソースディレクトリを汚染せず、複数の構成(Debug/Release、異なるオプション等)を並行して管理するために「シャドウビルド」を推奨します。これは、ソースコードとは別のディレクトリを作成し、そこからconfigureスクリプトを呼び出す手法です。
必須となる依存ライブラリとツール
ビルドを開始する前に、以下のコンポーネントをインストールし、環境パスを通しておく必要があります。
- ActivePerl: Qtのビルドプロセスで必須となります。
- Python 2.7.x: ビルドスクリプトの実行に必要です。
- Ruby: WebKitモジュールのコンパイルに必要です。
- ICU4C: WebKitの依存関係であり、多言語対応に必要です(例:ICU 56.1)。ビルドオプションで
-icuを指定する場合、実行時にDLLが必要になります。 - OpenSSL: ネットワークモジュールでHTTPS通信をサポートするために必要です。
- NASM: OpenSSLのビルドを高速化する場合に推奨されます。
環境変数の設定
Visual Studioのコマンドプロンプトを起動した後、以下のスクリプトを実行して環境変数を初期化します。パスは各自のインストール環境に合わせて書き換えてください。
@echo off
:: Qtソースコードのルート
set QT_SRC_DIR=C:\Qt\qt-everywhere-opensource-src-5.6.0
:: 依存ライブラリのパス
set ICU_DIR=C:\Qt\icu
set OPENSSL_DIR=C:\Qt\openssl_x86
:: パスの構成
set PATH=%QT_SRC_DIR%\qtbase\bin;%QT_SRC_DIR%\gnuwin32\bin;%PATH%
set PATH=%ICU_DIR%\bin;%ICU_DIR%\lib;%OPENSSL_DIR%\bin;C:\Ruby21\bin;%PATH%
:: コンパイル環境の設定
set INCLUDE=%ICU_DIR%\include;%OPENSSL_DIR%\include;%INCLUDE%
set LIB=%ICU_DIR%\lib;%OPENSSL_DIR%\lib;%LIB%
set QMAKESPEC=win32-msvc2013
ビルドオプションの構成(Configure)
シャドウビルド用のディレクトリ(例:qt-5.6.0-build)に移動し、以下のコマンドを実行してビルド構成を決定します。ここではWindows XPへの対応や動的リンク、SSLサポートなどを有効にしています。
..\qt-everywhere-opensource-src-5.6.0\configure.bat ^
-prefix C:\Qt\5.6.0-msvc2013-shared ^
-opensource -confirm-license ^
-force-debug-info -ltcg ^
-nomake examples -nomake tests ^
-skip qtwebengine ^
-accessibility -plugin-sql-odbc -plugin-sql-sqlite ^
-opengl dynamic -target xp -largefile ^
-D _USING_V120_SDK71 ^
-qt-zlib -qt-pcre -icu -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz ^
-rtti -ssl -openssl -mp -l gdi32
※ -target xp と -D _USING_V120_SDK71 は、ビルドされたバイナリをWindows XPで動作させるために重要なフラグです。
ビルドの実行とインストール
構成が完了したら、nmakeを使用してコンパイルを開始します。完了後、ドキュメントの生成とインストールを行います。
:: コンパイル(非常に時間がかかります)
nmake
:: ドキュメントの生成とインストール
nmake docs
nmake install_docs
:: 指定したprefixへのインストール
nmake install
重要なトラブルシューティング
1. QtWebKitのビルド失敗について
WebKitのソースコードを公式サイトのアーカイブから直接ダウンロードしてビルドすると、ヘッダーファイルの参照エラーが発生することがあります。これを回避するためには、Gitを使用してリポジトリをクローンしたソースを使用することが推奨されます。git clone git://code.qt.io/qt/qtwebkit.git を利用してください。
2. ICUライブラリの配置
ビルドオプションに -icu を含めた場合、Qt DesignerやAssistantなどのツールを起動する際にICUのDLL(icudt51.dll, icuin51.dll, icuuc51.dll 等)が必要になります。ビルド完了後、インストール先の bin ディレクトリにこれらのファイルをコピーしてください。
xcopy /y /k "C:\Qt\icu\bin\icu*.dll" "C:\Qt\5.6.0-msvc2013-shared\bin\"
xcopy /y /k "C:\Qt\icu\lib\icu*.lib" "C:\Qt\5.6.0-msvc2013-shared\lib\"
3. QtWebEngineのユニコードエラー
QtWebEngine(Chromiumベース)をビルドする際、ファイルパスに日本語(マルチバイト文字)が含まれていたり、システムのユーザー名が日本語であると、Unicode形式の保存に関するコンパイルエラーが発生する場合があります。この場合、ビルド環境のパスをすべて英数字のみで構成し、システムロケールを適切に設定する必要があります。
成果物の確認
インストールディレクトリの bin\designer.exe や bin\assistant.exe が正常に起動し、ヘルプのインデックスが正しく表示されれば、ビルドは成功です。XP環境で動作させる場合は、作成したアプリケーションのプロジェクト設定においても v120_xp ツールセットを使用することを忘れないでください。