1 **If you cannot read Japanese, please read how2build_qt.txt.
2 ***That article translated from this by GOOGLE TRANSLATION , but still not correct.
4 ***If you can tranlate Japanese to any languages, please
5 ***translate this, publish and pull request to my GITHUB.
7 Common Source Code Project for Qt:ビルド方法
9 <whatisthis.sowhat_at_gmail.com>
12 Common Source Code Project(CSP)をQtに移植する上で、ビルドを
13 する方法・特にMinGWを使うときによくわからないという声がありま
17 ・Windowsの方は、MinGWが必要です…が、Qtのオープンソース版
18 インストーラ[1]にはMinGW(Qt5.5.1の場合にはGCC4.9.2)が
20 ・GCC (LLVM CLANGだとQtと相性が良くないかもしれない)
21 ・Qt5.1以上、勿論ヘッダなどの開発ファイルも。
22 ・OpenGL 2.1以上が動く環境。Windows用Qtにはソフトウェアレンダラが付
26 ・もし可能ならば、CCACHEを使うと若干速くできます[4]
27 ・git[5]があれば、ソースコードをリポジトリ[6]からダウンロードするこ
29 ・emufm7の一部のコードはテキストファイルからgawkでソースコード
30 に落としてます。ただし、ソースツリーには生成後のファイルが
33 [1] http://www.qt.io/download-open-source/ でWindows用(32/64bit)の
36 [3] http://libsdl.org/
37 [4] https://ccache.samba.org/
38 [5] https://git-scm.com/
39 [6] https://github.com/Artanejp/common_source_project-fm7
40 https://www.pikacode.com/Artanejp/common_source_project-fm7/
42 これらのものは、GNU/LinuxなどやMinGWならば、パッケージ管理ソフト
47 ソースツリーを${SRCDIR}に展開しておいて、
48 $ cd ${SRCDIR}/source/build-cmake/{VM名}/
56 [7] 実際には、CMakeのCursesGUI版のccmakeを使ったほうが設定が便利です。
59 基本的には同じですが、Qtのwindeployqt.exeを使うと、必要なQtラ
61 ただし、libstdc関連とlibSDL2とOpenGL関係のDLLは手動でコピーす
63 公式のMinGWにはCMakeはないので、[8]からダウンロードしてください。
66 mingw32-gccとmingw32-g++とmingw32-binutils、
67 mingw-developer-toolkitとmingw32-pthreds-w32
70 b.MSYS Bashのショートカットをデスクトップやメニューなどに登録して
71 おきましょう。デフォルトのインストール先ならば、
72 C:\MinGW\msys\1.0\msys.bat です。
75 [1]からダウンロードしたインストーラを起動し、mingw toolchainを
79 パスにCMakeが含まれるようにするか?とインストーラが訊いてくる
82 e.必要ならば、Gitをインストールします。
84 f.C:\MinGW\msys\1.0\home\{ユーザ名}\.profile を編集します。
85 この時、メモ帳で行うと問題が出るので、vimを使います。
89 export PATH=/c/MinGw/bin:$PATH:/c/Qt/Qt5.5.1/5.5/mingw492_32/bin
90 終わったら、[ESC]→ZZ コマンドで、書き込みます。
92 g.SDL2をインストールします。(参考:[9])
93 ダウンロードしてきたSDL2の"Windows Development MinGW"のtarball
95 $ tar xf SDL2-devel-2.0.4-mingw.tar.gz
97 $ mingw32-make install-package arch=i686-w64-mingw32 prefix=/c/mingw
99 h.ここまで来れたら、MSYS BASHを再度起動します。
100 そして、git cloneで取ってきたソースやgithubにあるリリースページの
101 ソースコードを展開します。ここでは、フルパスを${SRCDIR}と記述
106 $ cd source/build-cmake/${VM名}
109 $ cmake .. -G "MinGW Makefiles"
113 ※注意点:Windwos上の(ネィティブの)MinGWでは、makeではなく、mingw32-make
114 等を使います。Windows側がmakeを持ってて、しかもこれがunix形式の
115 Makefileを真面目に解釈してくれないという極悪仕様ですので…
117 j.う ま く ビ ル ド で き る こ と を 祈 り ま す
119 k.ビルドできたら、動かすためのディレクトリーにemu${VM名}.exeを
122 l.コピーした先のディレクトリィに移動した上で、
123 $ windeployqt.exe --release emu${VM名}.exe
124 とすると、リリースモードで必要なQtのライブラリをコピーしてく
125 れますが、libSDL2とlibpthreadとlibgcc_sなどを手動でコピー
126 しないと、Windowsのエクスプローラからは起動できません(;´Д`)
127 なお、CMakeのビルドタイプにDebugやRelwithdebinfoを指定した
129 $ windeployqt.exe --debug emu${VM名}.exe
131 その後、以下のファイルをC:\Qt\Qt5.5.1\mingw492_32\bin (など)
132 か、もしくはC:\MinGW\bin から、exeを置いたディレクトリにコピーします。
139 その上で、 SDL2.dll (C:\MinGW\bin にあるはず)も、このディレクトリに
142 [8] http://cmake.org/download/
143 [9] https://gist.github.com/Hamayama/155b5557db31334ce492
144 [10] 実際には、一旦CMakeを動かした後で、cmake-guiを起動して細かい設定を
147 3-3.クロスビルド (GNU/LinuxなどでWindows用のビルドを行う)
148 ここでは、GNU/Linuxホストで、Windows向けのCSPをクロスビルドする方法を
150 Android等向けのARMビルドやその他のOS向けビルドについての参考にもなるで
154 大抵の場合、MinGW向けのクロスGCC Toolchainがあるので、それを
158 mocなどはWindows用を使う必要があるので、Wineをインストールしま
160 その上で、exe拡張子のファイルをWine経由で起動できるように
161 binfmt-supportなどのサポートスクリプトにある、upda-ebinfmtsで設定
163 $ sudo update-binfmts --install Win32Exec /usr/bin/wine --magic "MZ"
164 で良かったと思います(うろおぼえでごめんなさい)
166 [11] http://d.hatena.ne.jp/kakurasan/20110909/p1 など参考に。
168 c.Qt for Windowsのインストール
169 [1]のURLから、Windows用インストーラを落とします。
171 $ sudo wine ./qt-opensource-foo.exe
173 そうするとQtのインストーラ画面が出てくるので、
174 Z:\usr\local\i586-mingw-msvc
177 $ sudo chmod ugo+x /usr/local/i586-mingw-msvc/5.5/mingw492_32/bin/*.exe
178 などとして、Windows用Qt添付のツールを直接起動できるようにしましょう。
181 libSDL2も、Windows用のものをインストールせねばなりません。
182 [3]から、SDL2のWindows用(Development用)をダウンロードして、
183 /usr/local/i586-mingw-msvc/ 辺りに展開しましょう。
186 CMakeのToolChain機能を使いますが、色々と設定がややこしいので、
188 ${SRCDIR}/source/build-cmake/cmake/toolchain_mingw_cross_linux.cmake
190 $ cd ${SRCDIR}/source/build-cmake/{VM名}/
193 $ cmake .. -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchain_mingw_cross_linux.cmake
198 ここまでの記述では、仮想マシン単位で手作業のビルドをしてきました。
199 しかし、一度下準備ができたのに、毎回毎回では厄介です。
200 故に、バッチファイル(Bashスクリプト)が用意されています。
201 ・${SRCDIR}/source/build-cmake/config_build.sh : 通常のビルド
202 ・${SRCDIR}/source/build-cmake/config_build_cross_win32.sh
203 : GNU/Linux上でMinGW32(Windows)用のファイルをビルドする
205 ・${SRCDIR}/source/build-cmake/config_build_mingw.sh
206 : Windows上のMinGWでMinGW用のファイルをビルドするスクリプト
208 config_build.sh は、buildvars.dat と言うファイルに設定を書いていきます。
209 config_build_mingw.sh は、buildvars_mingw.dat と言うファイルに設定を
213 $ ./${スクリプト名} ${VM名1} ${VM名2} ... ${VM名n}
215 CMakeからMakefilesを生成→make→インストール→make clean
218 make結果については、 ${VM名}/build/make.log (MinGW向けクロスビルドでは
219 ${VM名}/build-win32/build.log )に記録されています。
221 Windows向けビルドについては、 ${SRCDIR}/source/build-cmake/bin-win32/
222 に出来上がったバイナリをコピーして、ビルド作業ディレクトリをcleanします。
224 バッチビルドについては、Midnight Commander (mc)を使うと、非常に楽です。
225 詳しくは、 https://www.midnight-commander.org/ を。
226 Windowsの非公式ビルドが、https://sourceforge.net/projects/mcwin32/ に
227 ありますので、インストーラを使ってインストールしましょう。