2012年9月10日月曜日

下準備(2)

Qtの導入


前の記事でboost, assimpまでインストールしたので、次はQt周りをインストールします。Win32用のQtとしては、Visual Studio用のバイナリと、MinGWをセットにしたバイナリがありますが、すでにMinGWの環境は構築してあるので、ソースからビルドすることにします。2012年9月初旬の時点での最新版は4.8.2ですが、普通にソースがNokiaのサイトで公開されているのは4.8.1なので、そちらを使うことにします。ファイルqt-everywhere-opensource-src-4.8.1.tar.gzを展開すると、qt-everywhere-opensource-src-4.8.1というディレクトリができ、そこに移動します。基本的には、

> configure.exe ; make

でライブラリや各種ツールをビルドするのですが、MINGWでビルドするので、configure.exeのオプションとして、-platform win32-g++-4.6を指定します。また、デフォルトでビルドされるさまざまなツールをすべてビルドしようとすると、cygwinのメモリ不足によるエラーが発生してライブラリを生成できないので、必要最小限のものだけビルドするようにします。今回は、以下のオプションでビルドしました。

-shared
-release
-opensource
-no-dsp
-no-vcproj
-no-qt3support
-no-webkit
-no-phonon
-platform win32-g++-4.6
-nomake demos
-nomake examples
-prefix d:/local/qt/4.8.1

ここで、javascript関係でエラーが発生します。具体的には、src/3rdparty/javascriptcore/JavaScriptCore/runtimeの、

  • JSGlobalObject.h
  • JSStaticScopeObject.h

です。それぞれ、
JSGlobalObject.h 53行目の


using JSVariableObject::JSVariableObjectData;

struct JSGlobalObjectData : public JSVariableObjectData {

を、

struct JSGlobalObjectData : public JSVariableObject::JSVariableObjectData {

と、修正します。

同様に、JSStaticScopeObject.hの28行目の、

using JSVariableObject::JSVariableObjectData;
struct JSStaticScopeObjectData : public JSVariableObjectData {

を、

struct JSStaticScopeObjectData : public JSVariableObject::JSVariableObjectData {

と、修正します。

そして、makeが終了したら、

> make install

で、インストールが完了します。

PyQtのインストール


PyQtは、Riverbankcomputingが供給している、QtのPythonバインディングです。PyQtを使うためには、同じところで供給しているPythonのC/C++バインディングであるSIPをインストールする必要があります。SIPはここから、PyQtはここからそれぞれ開発版のスナップショットをダウンロードして展開します。コマンドプロンプト上で、SIPを展開したディレクトリに移動して、

> python configure.py -p win32-g++

を実行すると、Makefileが作成されます。そして、

> make

を実行すると、各種Pythonソースやヘッダファイル、バイナリが作成されます。そして普通は

> make install 

で、それらのファイルが、pythonのディレクトリにコピーされるはずなのですが、

/bin/sh: -c: line 1: syntax error: unexpected end of file

というメッセージが出て、コピーがされません。これは、MakefileがMinGWのsh.exeを呼び出す仕様になっていることによるエラーだそうで、一旦MinGWのインストールディレクトリにある、msys/1.0/bin/sh.exeの名前を変更して、

> mingw32-make install

と実行することでインストールが成功します。次にPyQtを展開したディレクトリに移動して、

> python configure.py 

を実行すると、Makefileが作成されるので、

> mingw32-make 

でビルドします。Qtの全機能に対してバインディングを作成するので、かなり時間がかかります。ここでもそのままではmake installに失敗するので、sh.exeの名前を変更して

> mingw32-make install
でインストールされます。


PyOpenGLのインストール


PyOpenGLは、PythonからOpenGLにアクセスするためのバインディングです。こちらは、Pythonのsetuptools (easy_install, pipなど)を用いてインストールします。最初に、Pythonのインストールディレクトリの下の、scriptsフォルダにPATHが通っていることを確認してください。setuptoolsのダウンロードページから、Windows用のバイナリをダウンロードして実行すると、easy_installがインストールされます。あとは、PyOpenGLのインストールサイトに書いてある通り、コマンドプロンプト上で、


> easy_install PyOpenGL PyOpenGL-accelerate

と実行することで、インストールが完了します。


Py++のインストール


OMPLでは、Pythonバインディングを作成するために、PythonのC++バインディングであるPy++を用いています。さらに、Py++は、PygccxmlおよびGCCXML(GCCの中間ファイルからXMLファイルを作成するソフト)を利用しています。これらは、OMPLとは独立に開発されているのですが、開発元が供給しているバージョン(pygccxml, Py++)を用いると、OMPLでのPythonバインディングの構築に失敗してしまいます。OMPLでの構築ができるように修正されたものが、sourceforgeのOMPLのサイトにあるので、そちらをインストールすることにします。サイトから、pygccxml, pyplusplus(Py++). gccxmlのソースファイルをダウンロードして、インストールします。


GCCXMLのインストール


最初に、gccxmlを解凍します。 gccxmlはCMakeでビルドするので、解凍してできたディレクトリに移動して、buildディレクトリを作成し、そこに移動して、MinGWシェル上で、

$ cmake-gui ..

と実行します。Makefileは、MSYS Makefileを指定してconfigureを実行します。G++の多くの機能に対してチェックを行うので、かなり時間がかかります。


CMakeグループの、CMAKE_INSTALL_PREFIXに、インストール先のディレクトリを指定します。今回は、d:/local/gccxmlとしました。再度"configure"を実行して、上の方で赤い項目がないことを確認して、"generate"を実行すると、Makefileが作成されるので、

$ make; make install

を実行します。インストールしたディレクトリのbinディレクトリを環境変数PATHに追加します。

Py++のインストール


最初に、pygccxmlを解凍したディレクトリに移動して(コマンドプロンプトでもMINGWシェルでもどちらでも可)、

$ python setup.py install

を実行します。エラーメッセージが出なければOKです。
次に、Py++(pyplusplus)を解凍したディレクトリに移動して、

$ python setup.py install

とすることでPy++がインストールされます。

OpenDE (Open Dynamics Engine)のインストール


OpenDEは、衝突検出・物理計算エンジンの一つです。OMPL.appでは、物理計算エンジンとしてOpenDEを用いることができます。
最新の開発版は、svnでチェックアウトします。

svn co https://opende.svn.sourceforge.net/svnroot/opende/trunk opende-trunk

チェックアウトしてできたディレクトリに移動して、

$ bootstrap

を実行して、configure スクリプトを作成します。ここで、opendeが用いているlibtoolと、MINGWで用いているものとでバージョンの不整合があるためmakeでエラーになります。そこで、

$ aclocal; libtoolize --force; autoheader; autoconf

を実行してから bootstrapを実行します。また、OpenDEのデフォルトの設定では、単精度・静的ライブラリなので、configure スクリプトに以下の引数を与えます。(インストール先はd:/localに設定)

$ configure --enable-double-precision --enable-shared --prefix=/d/local

これでMakefileが出来上がったらmake; make installを実行します。

一応、これで下準備は終了です。


















0 件のコメント:

コメントを投稿