1. QuantLibを使ってみる
1.1 ダウンロードとインストールとビルド
1.1.4 boost ライブラリーのダウンロードとビルド
最後にboostライブラリをインストールします。Boostは、C++でのプログラム開発時に使われる汎用的な機能をライブラリにまとめたものです。汎用的な機能を提供しているライブラリとしては、C++の “標準テンプレートライブラリー”がありますが、boostはそれを補完するものとして、C++の開発者のコミュニティーによって開発され、オープンソースとして無料で提供されています。QuantLibのソースコードの中でも、boostが提供しているライブラリを随所で使っており、QuantLibを使うには、boost ライブラリをインストールしておく必要があります。
1.1.4.1 ダウンロード
そのBoostライブラリをダウンロードします。
Boostのソースコードは、SourceForgeのレポジトリで管理されており、そこからダウンロードします。まず、このサイトに行って下さい。すると下記のような画面が登場します。
ここに、いくつかのディレクトリがありますが、boost という名前のディレクトリをクリックすれば、boost ライブラリのソースコードが格納されているディレクトリに行きます。また、boost-binaries というディレクトリには、コンパイル済みの library ファイルが格納されています。
boost を使うには、
- boostディレクトリからソースコードをダウンロードし、自分でコンパイルして使う方法と、
- boost-binariesディレクトリから、既にコンパイル済みのlibraryファイルをダウンロードしそのまま使う方法
があります。後者の方法の方がはるかに簡単なので、基本的に 2 の方法をお勧めします。但しその場合、使用する Visual C++ のバージョンおよびプラットフォーム(Windowsの32ビット版か64ビット版)に対応するライブラリを選択してダウンロードする必要があります。
前者の場合は、使われるコンパイラーのバージョンやプラットフォームや、その他のオプションを、正しく設定する必要があり、C++での開発に習熟していないと、ハードルは高いです。せっかくコンパイルしても、自分の C++ プログラムとリンクさせる際にエラーが多発し、解決がやっかいです。
一応、両方のやり方を解説しますが、自分でコンパイルする方法については、OS や CPU の能力により設定方法を変える必要があり、以下の解説でうまくいく保証はありません。自分は C++ での開発の専門家では無いので、参考程度で読んで下さい。
1.1.4.2 コンパイル済みのlibraryファイルをダウンロードして使う
先ほどのBoost C++ Library filesの中から boost-libraries を選択しクリックします。すると、コンパイル済のboost librariesのリストが出てくるので、リストから最新バージョンの番号(現時点2023年11月では1.83.0)を示すディレクトリ名をクリックします。すると、次のようなページに行きます。
最新のバージョンは 1.83.0 ですが、それに対応するライブラリファイルが10個以上用意されています。ここから、自分が使っているVisual Studioに付属しているVisula C++のバージョンと、プラットフォームのビット数(32 bitまたは64 bit)に対応したlibraryファイルをダウンロードします。Visual Studioのバージョンと、Visual C++のバージョンの対応関係は、先ほどのリストで示した通りです。
(注:Visual Studio の各バージョンに対応する Visual C++ のバージョンは、上記画面の library ファイルのリストの一番下にあるDEPENDENCY_VERSIONS.txtファイルをダウンロードし開ければ、そこに載っています)
Visual Studio 2022 年版は、内部の Visual C++ バージョンが 14.3 になります。またそれに対応する OS である Windows 10 あるいは Windows11 は、64 bitです。従って、上記リストの内、”boost_1_83_0-MSVC-14.3-64.exe”を選択し、ダウンロードします。
ダウンロードが終わればその実行ファイルを実行して下さい。その際、PCの管理者権限が必要です。 実行すると最初に Windows のセキュリティー機能から警告が出されますが、boost を信頼してそのまま実行を続けてください。すると、ダウンロードファイルを保存するディレクトリを聞いてくるので、適当なディレクトリを指定し、続行します。数分でインストールが完了します。保存されたディレクトリ名を、きちんと記憶しておいて下さい。後程、QuantLib のプロジェクトをビルドする際、boost library へのパスとして、そのディレクトリ名を指定する必要があります。
1.1.4.3 ソースコードをダウンロードし、自分でコンパイルする。
Boost を Visual Studio で使う場合、基本的には前の方法で十分です。ただ、Visual Studio の新しいバージョンが発表されたばかりだと、それに対応したコンパイル済ライブラリが未だ作成されていないケースがあります。そういった場合は、boost ライブラリを、自分でコンパイルする必要があります。
(注:但しそういった場合でも、少し待てば、必ず新しいVisual C++バージョンに対応したコンパイル済ファイルが出てきます。)
先ほどのSourceForgeのページから boost という名前のディレクトリをクリックすると下記のようなファイルのリストが出てきます。
Visual Studio を使っている場合、一番上の zipファイルをクリックしダウンロードし、解凍します。Windows エクスプローラーで、ダウンロード Directory に行き、そのメニューにある“すべて展開”をクリックすれば、解凍が開始されます。保存するディレクトリ名を聞いてくるので、適当なディレクトリ名を指定し、そこに解凍後保存します。
さて、Boostのビルドです。 Boostのビルド方法は、いろいろあるようで、Boostのサイトでも紹介されていますし(但し、数年前の書かれた古いもので、注意が必要です)、他のサイトでもいろいろ紹介されています。その大半は、b2というboostが提供しているアプリを使って(そこからVisual C++のコンパイラーを呼び出して)、コンソール画面からコンパイルを実行する方法です。コンソール画面を使うのは、C++でのシステム開発に習熟していないと、ハードルは高いです。自分も習熟している訳では無く、Webで紹介されている様々なboostのコンパイル方法を参考に、見様見真似で行っているだけです。従って、以下の方法は、あくまで参考程度で読み進めて下さい。
- bootstrap.batを実行する
コンソール画面を開き、cdコマンドを使って、先ほどインストールしたディレクトリに行きます。
c:\ > cd c:\xxx\yyy\boost_1_83_0
そのディレクトリ下にある bootstrat.batを実行します。
c:\xxx\yyy\boost_1_83_0 > bootstrap.bat
すると、インストーラーが走って、boostビルダーである "b2.exe" が生成されます。 - 次に b2 を実行する
同じコンソール画面で、先ほどと同じディレクトリ下で、b2 を実行します。下記に 4 種類の実行例を示しています。コンパイラオプションが色々ついていますが、開発環境、構成、プラットフォーム、生成されたライブラリの保存先、自分の PC の CPU のコアの数などを指定しています。これらの意味を、ある程度理解されている場合のみ、使ってください。他のサイトで紹介されていた方法を、若干修正して実行してみました。
c:\xxx\yyy\boost_1_83_0>
.\b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=64 --stagedir=stage/x64 -j 4
.\b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=shared address-model=64 --stagedir=stage/x64 -j 4
.\b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=static address-model=64 --stagedir=stage/x64 -j 4
.\b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=64 --stagedir=stage/x64 -j 4
- コンパイラオプションの意味
- toolset= は使っている開発環境を指定するもので、Visual C++はmsvc
- threading= はシングルスレッドかマルチスレッドの指定
- variant= はdebug かreleaseを指定。ここでは両方(従って2種類のlibraryが生成される)
- link= はstatic link かdynamic(shared) linkを指定。ここでは最初の2命令では、staticで、後の2命令ではsharedを指定。
- runtime-link= はstatic かsharedを指定。ここでは1番目と3番目の命令でstaticを指定し、2番目と4番目の命令ではstaticを指定。
- address-model= は、Windows/CPUが32ビットか64ビットかを指定。ここでは64 を指定。
- --stagedir= は、生成されたlibrary filesを保存するディレクトリ名を指定。ここでは \stage\x64 を指定。
- -j は、使っているCPUのコア数を指定。ここでは(自分のPCのCPUコア数である)4を指定。この数字は、ご自身が使われているPCのCPUコア数を確認して設定して下さい。
b2実行結果は、以下のようにコンソール画面に表れました。コンパイラオプションとして link=shared , runtime-link=static の指定は、下記画面にある通り、うまくいきませんでした。実際に、libraryが保存されているディレクトリを見に行くと、多数のlibraryファイルが生成されていましたが、shared link(ダイナミックリンク)のライブラリは生成されていませんでした。ただし、QuantLibを他のアプリケーションにインストールして使うのでなければ、ダイナミックリンクライブラリは、特に必要ありません。
上記の方法で、自分の場合は、何とか boost library をコンパイルする事ができ、static library のファイル群が生成されました。この方法は、PC のプラットフォームと、Visual Studio のバージョンが私のと同じ場合のみ有効です。ご自身でコンパイルする場合は、自分のPC環境と、コンパイルオプションの意味をある程度理解した上で行って下さい。
<ライセンス表示>
QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。 ライセンス