2003年にUC Berkeleyに留学した際,構造解析ソフトウェアフレームワークのOpenSeesを開発していたG.L. Fenves先生のグループに加わりました.これを用いた分散ハイブリッド実験を行うために,OpenSeesと協働して実験を行うためのフレームワークOpenFrescoを開発しました.その際,散々ソースコードを読んだので,OpenSeesは今でも便利に研究に使っています.WindowsやMac OS Xの実行形式バイナリをダウンロードするだけなら簡単ですが,中身をいじくろうと思うと,ソースコードからビルドする必要があります.で,それが簡単ではない(コツを知っているとなんとかできる).なので,昔から使っているコードを改変しながら使っていたんだけど,いつかは最新版に置き換えないとな,と思っていました.特に,version 3.0.3からTclをメジャーバージョン8.5から8.6に変えていたことから,付け焼き刃の対処には無理がでてきたので.
OpenFrescoの開発者なのに全然使ってないな,と思うことがあり,一念発起.Windowsの環境を整えることにしました.OpenFrescoでは実験用の機器をコントロールする必要があり,そのためのライブラリはWindowsのみしか対応していないものが多いためです.まずはOpenSeesのビルドもやってみました.案の定,一筋縄では行かなかったので,ここに覚え書き.
準備
- OS:Windows 10 (64 bit)
- コンパイラ:Microsoft Visual Studio Community 2019(フリーで利用できます)
- OpenSees ソースコード:Git Hub OpenSees Release Pageよりversion 3.1.0のzipファイルをダウンロード.自分のDocumentフォルダに展開.
- Tcl/Tk:ActiveStateのActiveTclより,version 8.6をダウンロード.OpenSeesのVisual Studioプロジェクトファイルでは,Tcl関連のリンク先をc:\Program Files\tclを想定しているので,インストール先もこちらに変更.
- 配布されていないライブラリ:これが一番見つけるの大変でした.OpenSees実行ファイルをリンクする際,ifconsol.libなどが求められるのですが,これが配布されていません.OpenSees + ifconsol.libで検索すると見つかるライブラリを使ってもうまく行かない.おそらくそれらは32 bitバージョンのよう.Intel® Parallel Studio XE Cluster Edition for Windows* 2020の体験版をダウンロードして見つけました.肝心のファイルは,c:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.0.166\windows\compiler\lib\intel64_winフォルダにある以下のファイルをOpenSees-3.1.0\Win64\libにコピー.体験版の期間が切れるとどうなるんだろう?
- ifconsol.lib
- libdecimal.lib
- libifcoremt.lib
- libifport.lib
- libirc.lib
- libmmt.lib
- svml_dispmt.lib
ビルド
OpenSeesを展開したフォルダより,Win64フォルダにあるOpenSees.slnをダブルクリック.Visual Studioのソリューションファイルです.
最新版のソースコードには,インタープリターとしてTclに加え,Pythonも使えるように拡張されていますが,とりあえずTclの方だけビルドしますが,一点だけ修正します.Visual Studioのソリューションエクスプローラーより,OpenSeesのプロパティを右クリックして,プロパティページを開き,構成プロパティの「C/C++」の「コード生成」の中で,「ランタイムライブラリ」を「マルチスレッドデバッグ DLL (/MDd)」に変更します(下の画像参照.2020/1/20追記).これで「ビルド」.するとWin64\binフォルダに,OpenSees.exeができるはず.