Qt5の最新版をビルドしておためしする記事です。
公式のドキュメントはこちら「Building Qt 5 from Git」
補足する感じです。
基本は見てもできません。
リポジトリにある「README」も見るといろいろヒントがあります。
/// 環境(参考) ///
・Windows 7 Pro (64bit)
・Virtual Boxにインストール
・割り当てコア数2
・割り当てメモリ2G
・3DアクセラレーションON(だけどVBのドライバが対応してないと言われて無意味に・・・。)
注意
作業をするフォルダは「c:\qt5」として以下の説明をします。
/// 環境作成 ///
1.必要なツールをインストール
以下のツールが必要になります。
・VisualStudio2008 Pro(もしくは2010)
・ActivePerl (5.12以上)
・ActivePython (2.7以上)
・git
・Windows SDK 7
2.設定ファイルなど修正
2ヶ所のファイルのコンパイル設定を修正します。
リリース用に「-O2」「-O1」とあるので「-Od」変更します。
デバッグ用に念のため「-Od」を追加します。
(2010の場合は変更するファイルのフォルダが隣です。)
以下実際のパッチ
c:\qt5\qtbase用
この設定をしないとビルドがとおりません。
ところどころのプロジェクトでui_hoge.hが作成されなくなっていました。
よくよく調べるとqmakeのソースに以下のようなコメントがありました。
が、結局上記の2ヶ所のどちらかでいいのかどっちもなのかはわかりませんでした。
(というか深く追ってない)
/* Disable optimization in getProjectUUID() due to a compiler
* bug in MSVC 2010 that causes ASSERT: "&other != this" in the QString
* copy constructor for non-empty file names at:
* filename.isEmpty()?project->first("QMAKE_MAKEFILE"):filename */
しかしコピーコンストラクタでアサートでるから最適化を切ってねと・・・。
一部のプロジェクトをビルド対象から外します。
はずさなくても大丈夫になりました。
C:\qt5\qttools用
/// ビルドの準備 ///
1.Qt5のソースを取得
>cd c:\
>git clone git://gitorious.org/qt/qt5.git qt5
2.リポジトリを初期化
>cd qt5
>perl init-repository
3.環境変数の設定
>CALL "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64
>set QTDIR=c:\qt5\qtbase
>set PATH=%QTDIR%\bin;%PATH%
>set QMAKESPEC=win32-msvc2008
バッチファイルの最後のパラメータは環境にあわせてどうぞ。
4.パッチの適用
>cd qtbase
>patch -p1 forqtbase.patch
>cd ..\qttools
>patch -p1 forqttools.patch
>cd ..
/// ビルド ///
1.configure
>configure -developer-build -opensource -nomake examples -nomake tests -opengl desktop -prefix "c:\qt\qt5.0.0b"
「-confirm-license」をつけると途中に表示されるライセンス条項に自動Acceptします。
2.ビルド
>perl build
>nmake
あとは待つだけ。
デバッグとリリース両方ビルドして3時間半くらいかかりました。
3.インストール
>nmake install
2012/11/11追記
上記のconfigureのパラメータを追加しました。
OpenGLに関連する部分のビルド方法が変更になっためです。
1.OpenGLの命令をDirectXに変換してくれるライブラリを使う方法
2.OpenGLのネイティブドライバを使用する方法
今回追加したパラメータは2の方法を取る場合です。
プロジェクトのルートにあったbuildというシェルスクリプトがなくなって普通にnmakeを叩くだけになりました。
configureするときに-prefixでインストール先のフォルダを指定しておきます。やらなくてもOKなのですがビルドフォルダと分離できるので。
/// クリーン ///
>git submodule foreach --recursive "git clean -dfx"
Webの説明にはシングルクォートで書かれてますがエラーになるのでダブルで。
masterの最新を使用するとやっぱりQt Creatorでqmlviewerを認識できないと言われるので6/29の3つ目のコミットまで戻ると使えます。
Qt Creatorはただのエディタと割りきってコマンドラインとかからqmlscene.exeを叩けば使えますけどね。
相変わらずqmlviewerがないと警告が出ますが、Qt Quick UIアプリの場合はqmlsceneを使用してQtCreatorから実行できるので特に問題は無いです。
configreでprefixつけてインストールすれば直るよって噂を聞いたのですが相変わらずでした・・・。
<Category : Qt>
公式のドキュメントはこちら「Building Qt 5 from Git」
補足する感じです。
基本は見てもできません。
リポジトリにある「README」も見るといろいろヒントがあります。
/// 環境(参考) ///
・Windows 7 Pro (64bit)
・Virtual Boxにインストール
・割り当てコア数2
・割り当てメモリ2G
・3DアクセラレーションON(だけどVBのドライバが対応してないと言われて無意味に・・・。)
注意
作業をするフォルダは「c:\qt5」として以下の説明をします。
/// 環境作成 ///
1.必要なツールをインストール
以下のツールが必要になります。
・VisualStudio2008 Pro(もしくは2010)
・ActivePerl (5.12以上)
・ActivePython (2.7以上)
・git
・Windows SDK 7
2.設定ファイルなど修正
2ヶ所のファイルのコンパイル設定を修正します。
リリース用に「-O2」「-O1」とあるので「-Od」変更します。
デバッグ用に念のため「-Od」を追加します。
(2010の場合は変更するファイルのフォルダが隣です。)
以下実際のパッチ
c:\qt5\qtbase用
diff --git a/mkspecs/win32-msvc2008/qmake.conf b/mkspecs/win32-msvc2008/qmake.conf index 46cccff..54c25fc 100644 --- a/mkspecs/win32-msvc2008/qmake.conf +++ b/mkspecs/win32-msvc2008/qmake.conf @@ -19,9 +19,9 @@ QMAKE_YACCFLAGS = -d QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t QMAKE_CFLAGS_WARN_ON = -W3 QMAKE_CFLAGS_WARN_OFF = -W0 -QMAKE_CFLAGS_RELEASE = -O2 -MD -QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi -QMAKE_CFLAGS_DEBUG = -Zi -MDd +QMAKE_CFLAGS_RELEASE = -Od -MD +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Od -MD -Zi +QMAKE_CFLAGS_DEBUG = -Zi -MDd -Od QMAKE_CFLAGS_YACC = QMAKE_CFLAGS_LTCG = -GL QMAKE_CFLAGS_MP = -MP diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index c19fbcc..5eaf861 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -31,7 +31,7 @@ CFLAGS_EXTRA = /MP !endif CFLAGS_BARE = -c -Fo./ \ - -W3 -nologo -O1 \ + -W3 -nologo -Od \ $(CFLAGS_EXTRA) \ -I$(QMKSRC) -I$(QMKSRC)\generators -I$(QMKSRC)\generators\unix -I$(QMKSRC)\generators\win32 -I$(QMKSRC)\generators\mac -I$(QMKSRC)\generators\integrity \ -I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION) -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION)\QtCore \
この設定をしないとビルドがとおりません。
ところどころのプロジェクトでui_hoge.hが作成されなくなっていました。
よくよく調べるとqmakeのソースに以下のようなコメントがありました。
が、結局上記の2ヶ所のどちらかでいいのかどっちもなのかはわかりませんでした。
(というか深く追ってない)
/* Disable optimization in getProjectUUID() due to a compiler
* bug in MSVC 2010 that causes ASSERT: "&other != this" in the QString
* copy constructor for non-empty file names at:
* filename.isEmpty()?project->first("QMAKE_MAKEFILE"):filename */
しかしコピーコンストラクタでアサートでるから最適化を切ってねと・・・。
はずさなくても大丈夫になりました。
C:\qt5\qttools用
diff --git a/examples/examples.pro b/examples/examples.pro index 3c12ee6..996229c 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -SUBDIRS += help designer uitools +#SUBDIRS += help designer uitools diff --git a/tests/tests.pro b/tests/tests.pro index 85e4f3a..db5c36a 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -SUBDIRS += auto +#SUBDIRS += auto
/// ビルドの準備 ///
1.Qt5のソースを取得
>cd c:\
>git clone git://gitorious.org/qt/qt5.git qt5
2.リポジトリを初期化
>cd qt5
>perl init-repository
3.環境変数の設定
>CALL "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64
>set QTDIR=c:\qt5\qtbase
>set PATH=%QTDIR%\bin;%PATH%
>set QMAKESPEC=win32-msvc2008
バッチファイルの最後のパラメータは環境にあわせてどうぞ。
4.パッチの適用
>cd qtbase
>patch -p1 forqtbase.patch
>cd ..
/// ビルド ///
1.configure
>configure -developer-build -opensource -nomake examples -nomake tests -opengl desktop -prefix "c:\qt\qt5.0.0b"
「-confirm-license」をつけると途中に表示されるライセンス条項に自動Acceptします。
2.ビルド
>nmake
あとは待つだけ。
デバッグとリリース両方ビルドして3時間半くらいかかりました。
3.インストール
>nmake install
2012/11/11追記
上記のconfigureのパラメータを追加しました。
OpenGLに関連する部分のビルド方法が変更になっためです。
1.OpenGLの命令をDirectXに変換してくれるライブラリを使う方法
2.OpenGLのネイティブドライバを使用する方法
今回追加したパラメータは2の方法を取る場合です。
プロジェクトのルートにあったbuildというシェルスクリプトがなくなって普通にnmakeを叩くだけになりました。
configureするときに-prefixでインストール先のフォルダを指定しておきます。やらなくてもOKなのですがビルドフォルダと分離できるので。
/// クリーン ///
>git submodule foreach --recursive "git clean -dfx"
Webの説明にはシングルクォートで書かれてますがエラーになるのでダブルで。
Qt Creatorはただのエディタと割りきってコマンドラインとかからqmlscene.exeを叩けば使えますけどね。
相変わらずqmlviewerがないと警告が出ますが、Qt Quick UIアプリの場合はqmlsceneを使用してQtCreatorから実行できるので特に問題は無いです。
configreでprefixつけてインストールすれば直るよって噂を聞いたのですが相変わらずでした・・・。