2009-10-19

BoostをCMAKEでビルドする方法

1.4.0から、BoostはCMAKEでもビルドできるようになった。今回、そのビルド方法を解説しようと思う。

CMAKEとは何ぞや。曰く、「クロスプラットフォームでオープンソースなビルドシステム」だということだ。世にビルドシステムというのは、多数ある。makeは有名だし、Visual Studioのプロジェクトファイルも、ビルドシステムである。Boostは、bjamを独自に開発した。CMAKEは、どうもこれらのビルドシステムとは、少し違うようである。

CMAKEは、これらの既存のビルドシステム用に必要なスクリプトを、生成するためのスクリプトである。つまり、CMAKE自体は、ビルドをしない。各種環境での、ビルドに必要なファイルを生成するだけで、実際のビルドは、makeやVSなどに丸投げするらしい。

さて、CMAKEを使うには、まずインストールしなければならない。以下から、コンパイル済みのバイナリを落とせる。主要なデスクトップ用OSをサポートしている。

CMake - Cross Platform Make

さて、以下はWindowsにおけるCMAKEの使い方である。

CMAKEをインストールしたならば、スタートメニューからCMAKEを起動する。何と分かりやすいことに、GUIである。Windowsユーザー大喜び。

まず、ソースコードのあるディレクトリを選択するのだが、ここで注意が必要である。現行のSVNレポジトリのHEADには、CMAKEに必要な一連のスクリプトが入っていない。

CMake – Boost C++ Libraries

に書いてあるように、

Index of /boost-cmake/1.40.0.cmake2/

から、CMAKEでビルド可能なBoostを落とせる。ただし、1.4.0に限り、tarballが壊れているという注意書きがあるので、今回はzipのものを落とすことにする。

また、gitを使って落とすこともできる。gitが使える人は、以下のコマンドを実行すればよい。ここから落とせるtarballは、壊れていないらしい。

git clone git://gitorious.org/boost/cmake.git

さて、以上に挙げた方法で、CMAKEによってビルド可能なBoostをダウンロードし終わったとする。

まず、CMAKEに、ソースコードのあるディレクトリを指定する。一番上に、"Where is the source code:"とあるのが、それだ。Boostのディレクトリを指定する。

つぎに、ビルド用のディレクトリを指定する。これは、makeやVSでのビルドに必要な各種ファイル、ビルドによって生成されるファイルなどを置くためのディレクトリだ。このディレクトリは、どこでもよい。

ここまで、設定したら、ダイアログの下にある、Configureボタンを押す。ここで注意しなければならないのは、前回と違う物をビルドする場合などで、どうも、前回の設定を覚えているのか、失敗することがある。その時は、メニューのFileから、Delete Cacheを選択すればよい。ダイアログがでるので、自分の使いたい環境を選択する。今回は、VC9の32bitコードのビルドを選ぶことにする。

さて、しばらく待つと、上のリストに、いくつかの設定項目が赤字で表示される。これは、CMAKEのスクリプトで設定されている変数で、自由に変えることができる。上のリストボックスのViewを変えることで、より詳しく設定することもできる。VC9の場合、BUILD_SINGLE_THREADEDと、BUILD_STATIC_RUNTIMEは、チェックする必要がない。というのも、MS自体が、シングルスレッドのランタイムや、スタティックリンクのランタイムを推奨していないためだ。CMAKE_INSTALL_PREFIXを、Boostをインストールしたいディレクトリに変えておこう。そのほかの設定項目は、お好みで変更すれば良い。そして、もう一度Configureボタンを押す。

問題がなければ、Generateボタンが押せるようになる。これを押すと、VSのプロジェクトファイルやソリューションファイル等が、最初に設定した、ビルド用のディレクトリに生成される。

ビルド用のディレクトリから、Boost.slnを開く。ビルドするには、いつも通り、Visual StudioからBuildすればよい。どうも、VSの設定が、Debugだろうが、Releaseだろうが、デバッグ、リリースの、両方のバイナリが生成されるようだ。

インストールするには、INSTALLプロジェクトをBuildすればよい。先ほどCAMKEのCMAKE_INSTALL_PREFIXで指定した、インストール用のディレクトリに、ヘッダとライブラリがコピーされる。あとは、VSのIDEの設定で、そのディレクトリのパスを、ヘッダファイルやライブラリファイルのパスに設定すればよい。

CMAKEでBoostをビルドしてみたところ、「かなり分かりやすくなっている」と感じた。実際、とくに何も、CMAKEの使い方に関するドキュメントを読まなくても、Boostをビルドすることができた。bjamは独自仕様で分かりにくく、ドキュメントも乏しく、どんなオプションがあるのかも見つけづらく、使い方を覚えるまでに、何日もかかった。ところが、CMAKEはGUIで分かりやすいし、オプションも全部、GUIで列挙してくれるし、実際のビルドは、使い慣れたVSのIDEから行えるので、実に簡単である。bjamだと、マルチコアCPUの環境で、ビルド時間の短縮のため、複数のコンパイラによって平行してコンパイルするには、-jオプションを使わなければならなかった。これは、bjamの読みづらいドキュメントをひっくり返さなければ分からないので、多くの人が知らないのだ。一方、VSのIDEは、環境によって、自動的にそういうことをやってくれる。実に便利だ。

1 comment:

Alarico Adalbert said...

私が神と非常に深く個人的な関係を持っていることは秘密ではありません。去年、ヘルペスと一緒に生活しなければならなかったすべてのでたらめを通してその関係を押して抵抗しましたが、神は私の頑固さよりも大きく、そのヘルペスと性器ヘルペスのすべてを突破しました。個人的には、自分がどれほど良くないかを何度も何度も聞くことは、可能な限り最悪の方法で私の心に侵入しました。私は完全にシャットダウンし、このように人生が一時的なヘルペスの大流行を終わらせようとしているように目を覚ましていました。
漢方薬にノーと言うのはco病です。それは恐怖に基づいています。そして、それは私の心が望むものに対して不誠実です。自分の周りに壁を作らないでください。特に健康上の問題や治療法に関しては、ハーブが作られたり、大胆な一歩を踏み出すことを恐れています。多くの若い男性/女性が何度も何度も私に言います、イトゥア博士は私を詐欺するつもりです、しかし今日私は彼に試みを与えます私は誰も漢方薬について私を納得させないだろうと感じていますわずか2週間飲んで、私は1年と数ヶ月間住んでいますが、今はアウトブレイクを経験していません、ヘルペス、統合失調症、癌、脊柱症、線維筋痛症、フルオロキノロンなどの病気のために彼の漢方薬が必要な場合は彼に連絡できます毒性症候群線維異形成症進行性。致命的な家族性不眠症第5因子ライデン突然変異、てんかんデュピュイトラン病、線維形成、糖尿病、セリアック病、クロイツフェルト・ヤコブ、ライム病、てんかん、病気、Co病、コプシー、アルツ、骨異形成症男性/女性不妊症、腸疾患、ハンチントン病、糖尿病、子宮筋腫。疾患、ループス、リポイド蓄積症(ゴーシェ病)、多嚢胞性疾患、脳アミロイド血管障害、運動失調、肝硬変、関節炎、筋萎縮性側索硬化症、アルツハイマー病、副腎皮質癌。喘息、アレルギー、HIV、てんかん、不妊、。 Email..drituaherbalcenter@gmail.com then what app。+ 2348149277967 ....そこにいる病気の男性/女性に対する私のアドバイスは簡単です...常に開かれた本になり​​ましょう。あなた自身、あなたの状況、そしてあなたが何をしているのかについて正直にいじってください。何も遠慮しないでください。持ちこたえると、どこにも行けなくなります...たぶん、孤独なビルへの片道チケットであり、それはあなたが行きたい場所ではありません。だから私の最後の真実...そして私はこれを理解し始めたところです。