POCOの構築
本記事では、Windows上のVC 2005 Expressを用いて構築する方法を説明します。その他のプラットフォームでの構築方法は、「README」ファイルを参照してください。
Visual Studio 2003か2005の環境であれば、「build_vs71.cmd」か「build_vs80.cmd」をそのまま実行するだけで構築が可能です。これらのcmdファイルは、すべてのコンポーネントを一括してコンパイルするスクリプトになっています。
Expressエディションの場合は、上位エディションにある一部のコマンドラインツールが含まれていないので、スクリプトがそのままでは動作しません。
今回は、コンポーネントごとに、手作業でコンパイルしてみましょう。といっても、難しくはありません。
まずは、基本となるFoundationコンポーネントです。Foundationフォルダ直下にある、ソリューション・ファイルを利用します。VC 2005 Expressを起動し、Foundation_vs80.slnファイルをオープンします。
ソリューションには、以下のように4つのプロジェクトが含まれています。なお、testで始まっているものは、単体テストフレームワークであるCppUnitに対応した単体テスト用プロジェクトです。これらはクラスライブラリの利用には不要ですので、コンパイルも不要です。
ビルド
ビルドメニューから、[バッチビルド]を選択します。
スタティックライブラリ形式とDLL形式の、2種類のライブラリが作成可能です。ここでは、DLLを作ってみます。「debug_shared」と「release_shared」のところのビルド欄にチェックしてビルドしてください。
コンパイル中、「Format.h」ファイルで「表示できない文字を含んでいます」という警告が出ます。この警告は、コメント内の文字のことですので、無視してかまいません。
コンパイルが完了すると、「Foundation」フォルダと同列の位置にある「bin」フォルダに、リリース用とデバッグ用のDLLができているはずです。同様に、「lib」フォルダに、インポートライブラリが生成されます。
残りのコンポーネントも、同じようにコンパイルします。「bin」フォルダに、すべてのDLLファイルが生成されるので、このフォルダのパスを、環境変数のPATHに登録しておくと便利です。
POCOの使い方
基本的には、必要なヘッダファイルをインクルードするだけで利用できます。ライブラリの情報をリンカ設定に記述する必要はありません。自動的に適切なライブラリがリンクされます。
ヘッダやライブラリのパスは、毎回プロジェクトごとに設定しても構いませんが、あらかじめ設定しておくと便利です。VC 2005 Expressのツールメニューにあるオプション画面で設定します。
インクルードファイルには、以下のパスを追加します。
- C:\Lib\Poco\Foundation\include
- C:\Lib\Poco\Util\include
- C:\Lib\Poco\XML\include
- C:\Lib\Poco\Net\include
ライブラリファイルには、「C:\Lib\Poco\lib」を追加します。
HTTP Timeサーバ
各コンポーネントのフォルダ直下に、「samples」というフォルダがあり、クラスライブラリを利用したサンプルソースがいくつか含まれています。今回は、NetコンポーネントのサンプルであるHTTPTimeServerソースを改造して、Webサーバを作ります。
ビルドと実行
まずは、サンプルそのままをコンパイルしてみましょう。「samples」フォルダのHTTPTimeServerにある、「HTTPTimeServer_vs80.vcproj」というプロジェクトファイルをオープンします。ちなみに、Pocoのサンプルソースはすべて、Javaを意識した形になっており、クラス定義と実装部分が1ファイルにまとまっています。
リリースまたはデバッグモードでビルドすると、「bin」フォルダに実行ファイルが生成されます。基礎の4つのコンポーネントすべて使用しますので、DLLファイルのパスを通すか、DLLファイルを実行ファイルと同じ「bin」フォルダにコピーしてください。
「HTTPTimeServer.exe」を起動してみましょう。[デバッグ]メニューの、[デバッグ開始]か[デバッグなしで開始]を選択します。
サーバ側の起動はこれで終わりです。次に、クライアントであるブラウザを起動してみましょう。URL欄に「http://localhost:9980/」と入力してください。
ブラウザに現在時刻が表示されましたね。自動で再読み込みされ、時刻が更新され続けます。同時に、サーバ側のプロンプト画面に接続先の情報が表示されます。