cuemol2/Build_MacOSXCueMol: Molecular Visualization Framework |
CueMol2のバージョンとxulrunner/geckoのバージョンCueMol2のバージョンに合ったバージョンを用いる必要がある。
MacOS XでのbuildMac OSX 10.6 (Snow Leopard)あるいは10.7(Lion)での場合.(Leopardではなぜか動かない) 必要なソフトウェア・ライブラリ類のインストール
MacPortsのインストールCueMol2自体のbuildには直接必要ではないが,xulrunner SDKについているxpidlなどのコマンドが, MacPortsのライブラリーに対してlinkされているので,インストールしないと動かない. 基本的には, Mac OS X Build Prerequisites の通りにMacPortsをインストールすればよいが, そのままでやると64bit版のbinaryしかinstallされないので(SDK付属のbinaryは32bitらしい) Universal binaryになるようにMacPortsを設定する必要がある. すべてのコマンドの引数に,+universalというのを追加して実行すればよいが, /opt/local/etc/macports/variants.conf ファイルに, +universal という行を追加すれば,自動的に追加したようになるらしい. ★Homebrewでも可能(むしろ現時点では推奨?) xulrunner SDKのインストールftp://ftp.mozilla.org/pub/xulrunner/releases/ からdownloadできる. CueMol2のバージョンに合ったバージョンのSDKを用いる必要がある。~/proj以下に展開すると,xulrunner-sdkというdirectoryができてその下に展開される.(複数バージョンを切り替えて使用する必要があるときはxulrunner-sdkを適宜renameする) Frameworkのインストール問題 MacOS版のsdkにはbuildに必要なFrameworkがなぜかはいっていない。runtimeの方のみに入っているのでそちらもinstallする必要がある。SDKを使用する場合は,xulrunner-sdk直下に/Library/Frameworks/XUL.Frameworkへのsymlinkを張ればよい. 一方、sourceからbuildすると、objdirのdistディレクトリー内にXUL.Frameworkがちゃんとできるので、 これをdebug versionとして使用できる。 BOOSTのインストールhttp://www.boost.org/から取得できる. まずソースを展開後、bjamをbuildする。 ./bootstrap.sh buildはそのままで行うと64bitになってしまうので適切なオプション設定が必要. また,すべてのlibraryのbuildを行う必要はない.以下のscriptで,~/proj/boost以下にインストールされるべくbuildされるはず. #!/bin/sh instpath=$HOME/proj/boost ./bjam \ --prefix=$instpath \ --exec-prefix=$instpath \ --libdir=$instpath \ --includedir=$instpath \ --with-date_time \ --with-filesystem \ --with-iostreams \ --with-program_options \ --with-regex \ --with-system \ --with-thread \ architecture=x86 address-model=32 link=shared,static threading=multi install (最後の引数がstageだとlibraryのbuildのみを行い、installだとheader fileのcopyまで行う.64bitをbuildするには,address-model=64にすればよい) ただ,実際にはinstallしても,うまくいかない。autoconfのscriptが期待するdirectory構成と違うようにinstallされてしまうため。
FFTWのインストールhttp://www.fftw.org/download.htmlから取得可能。 基本的に、configure/makeでいけるが、configure時に以下のように、32bit, float版をbuildするように注意。あと、defaultでstatic libraryがbuildされるが、それでOK. env CFLAGS=-m32 ./configure --enable-float --prefix=$HOME/proj --disable-fortran 以下のように最適化した方が、若干速い気がする。 env CFLAGS="-m32 -fast" ./configure --enable-float --prefix=$HOME/proj --disable-fortran --enable-sse glewのインストール
CGALのインストール方法
CGALとclangでの問題点 XCode4.5では、clangの対応していないstd::forwardやstd::moveを使ってしまいcompileが通らなくなる場合があった。 CMakeのconfigが正しく行われないのが問題らしい(原因は不明) ともかくも、手動で include/CGAL/compiler_config.h を書き換えて #define CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES 1 #define CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE 1 を定義されるようにして、makeするとうまくいった。(本来は自動で定義されて然るべきの筈) Source codeのcheckout
以下では~/proj/cuemol2以下にcheckoutしたとする. configureスクリプトの実行とbuild以下buildは,~/proj/cuemol2/uxbuildにて行うのでcdで移動. configureを走らせるためのスクリプトrun_config_osx.shが,~/proj/cuemol2/uxbuildにあるので,必要に応じて編集.(これを使わなくても出来なくもないが,いちいちキーボードから入力するのは面倒なので) library等のインストール位置を上述から変更していない場合は, CVS repositoryにあるrun_config_osx.shそのままで動くはず. インストール位置を変えている場合は,gecko_sdk_dirやboost_dirを変更する. エラー無くconfigureスクリプトが生成され,さらにMakefileが生成されたら,makeコマンドを実行.buildが行われる. お試し実行などMacOS Xでは,適切な位置にxulやxpcom関連のファイルが配置されていないとアプリとしてちゃんと動かない. make installを実行すると,~/proj/cuemol2/uxbuild/osxbuild以下にCueMol2.appが作成される. jsやxul関連のファイルはjarファイルにまとめられる. 他の必要なXULのファイルなどはsymbolic linkが作成される. /proj/cuemol2以下にsourceを展開している場合は, arch -i386 ~/proj/cuemol2/uxbuild/osxbuild/CueMol2.app/Content/MacOS/xulrunner でterminalから起動可.(arch commandは,runtime版を使用している場合は必須.そうしないと64bitのxulrunnerが起動して32bitのcuemol componentをdynlink使用としたところでこける) debugと開発に使用可能. "component not loaded"というmessage boxが出て起動しない場合は、dyldがこけている可能性大。 setenv NSPR_LOG_MODULES linker:5 と環境変数を設定して起動するとLoadMachDyldModuleでのエラーがterminalに出るようになるので、 何が原因で起動しないか検証することが可能になる(linkerをallにするとすべてのモジュールでのログが表示されるようになる) 配布パッケージの生成src/osxbuild下でmake builddmgを実行すると,CueMol2-<version番号>-MacOSX-Intelというフォルダが作成され,その中にもCueMol2.appというのが出来ているが,これはsymbolic linkではなくすべてコピーになっているので,コピーすることで他のMacでも実行できるはず.あとさらに,同じ内容が入ったdmgファイルも作成される. Finderなどから起動する場合は,Dynamic link library (dylib)のパスを適切に書き換えとかないと,見つからなくて正常に起動できなくなる.dylibファイルに書き込まれているパスをあとで書き換えるためには,ファイル中にある程度スペースが確保されていないと書き換えに失敗する(make builddmgが中断する). これを防ぐには,configure時にLDFLAGS=-Wl,-headerpad_max_install_namesを指定して十分なスペースを確保しておけばよい. その他注意点run_config_osx.shは,src/configureが存在する場合はautoconf/automake系のconfigure生成コマンドを実行しないので,強制的に再実行したい場合はsrc/configureを削除する. `%'-style pattern rules are a GNU make extension という警告が出るが,gnu makeを使用しているので,気にする必要はない(これはlinuxも同様) Mozilla build用にMacPortsでautoconfをinstallした場合,Mozillaのサイトにversion 2.13を入れるように指示があるが,それだとautomake系のコマンドがちゃんと動かなくなってしまうので,最新版を入れておく必要がある.(単にsudo port install autoconfとしておけばOK) 現在の所,configure.acがMacOSXでのbuildを検出すると,勝手にgccに-m32オプションをつけるようになっている.(将来的には64bit buildに対応すべきだが) メモPOV-Ray 3.7のビルド★以下の方法でbuildは出来るが、renderingしても正常に画像が出力されない。 なので、 http://megapov.inetart.net/povrayunofficial_mac/ で配布されているバイナリーを使用している。(ただしこのbinaryではWxHが2600pxを超えると画像が出力されないという不具合がある) githubからmasterを持ってくる BOOSTをbuildする.(上記のCueMol用に作ったのと同じで良い) 付属libpngをbuildする 付属zlibをbuildする unixでprebuild.shを実行 以下のscriptでconfigureを実行する.ただし,topdirとboost_dirは適宜変更する. boost_dir=$HOME/proj64/boost_static/ topdir=$HOME/src/povray-3.7-stable env NON_REDISTRIBUTABLE_BUILD=yes \ CXXFLAGS=-Wno-parentheses-equality \ ./configure \ COMPILED_BY="your name <email@address>" \ --disable-debug \ --disable-shared \ --disable-io-restrictions \ --with-boost=$boost_dir \ --with-libpng=$topdir/libraries/png/lib \ --with-zlib=$topdir/libraries/zlib/lib \ --without-libjpeg \ --without-libtiff \ makeを実行. できるbinaryは,pwdからincを読み込まないようなので,Library_Pathに追加指定する必要がある. |