Xerces-C++をVisual Studio 2022で使ってみた
1. はじめに
C++向けのXMLパーサーであるXerces-C++をVisual Studio 2022環境で使用したのでメモをする。
想定する環境は、下記である。
・OS: Windows 10
・Visual Studio 2022 Community
・xerces-c-3.2.5
・Cmake(GUI版) 3.26.4
2. Xercesのダウンロード
下記のURL(https://xerces.apache.org/xerces-c/download.cgi)からXercesのソースコードをダウンロードする。サイトに行くと、下記の場所にダウンロードのリンクがある。
執筆時点の最新版はVer3.2.5で、筆者はZip版をダウンロードし、テンポラリフォルダに展開した。
3. Cmakeでビルドする
フォルダの中身を確認すると、libやdllが含まれておらず、そのまま使用できない。そこで、CmakeでVisual Studio用のソリューションファイルを作成する。
ここでは、下記のフォルダにxercesを入れる前提で考える。
前提とするフォルダ:C:\Users\username\Documents\Dev\xerces-c-3.2.5
3.1 buildフォルダを作成する
ビルド時のファイルを格納するbuildフォルダを作成する。
C:\Users\username\Documents\Dev\xerces-c-3.2.5\build
3.2 Cmakeを実行する
公式サイトにあったCmakeのコマンドがイマイチうまくいかなかったため、Cmake(GUI版)からビルドする。下記にCmakeの設定を示す。
・「Where is the source code」: C:\Users\username\Documents\Dev\xerces-c-3.2.5
・「Where to build the binaries」: C:\Users\username\Documents\Dev\xerces-c-3.2.5\build
上記を入力後、Configureボタンを押す。
今回は、64ビット版のVisual Studio 2022でビルドするため、下記のような設定とした。なお、別のバージョンで使用する場合は、セレクトボックスを変更すること。
Finishを押下し、Configureの設定に従ってVisual Studioの環境を作成する。
「Generating done」と出ればCmake完了である。
4. Visual Studioでビルドする
先ほどの手順が正しくできていれば、buildフォルダにxerces-c.slnが作成される。ちなみに、*.slnはVisual Studioのソリューションファイルである。
「xerces-c.sln」を開き、ビルドをする。ここでは、リリースモードをRelease x64と設定し、ビルドした。
ビルドし、エラーとならなければOKである(少し時間がかかる)。
4. Visual Studioの設定をする
次は、Visual StudioでXercesを読み込む設定を行う。今回は、C++コンソールアプリケーションのプロジェクトを作成し、読み込ませて使用する。
プロジェクトを作成したら、デバッグ⇒デバッグのプロパティを選択する。
4.1 追加のインクルードディレクトリを設定
下記の追加のインクルードディレクトリに、ヘッダーを設定する。
・C:\Users\username\Documents\Dev\xerces-c-3.2.5\build\src
・C:\Users\username\Documents\Dev\xerces-c-3.2.5\src
4.2 追加の依存ファイルを設定する
追加の依存ファイルにlibファイルを設定する。
C:\Users\username\Documents\Dev\xerces-c-3.2.5\build\src\Release\xerces-c_3.lib
4.3 dllファイルを配置する
Visual Studioの設定が終わったら、xerces-c_3_2.dllを実行ファイルと同階層に配置する。ここでは、プロジェクトのDebugかReleaseフォルダにxerces-c_3_2.dllを配置する。
dllの配置を手作業でやるのが面倒な場合は、プロパティの構成プロパティ⇒ビルドイベント⇒ビルド後のイベント⇒コマンドラインにdllファイルをコピーする設定を記述しておいてもよい。これによって、コンパイルと同時にXercesからdllファイルをコピーできる。
5. 動作確認
サンプルコードを使用して動作確認を行った。サンプルは公式のものを使用した(https://xerces.apache.org/xerces-c/program-3.html)。
#include <xercesc/util/PlatformUtils.hpp>
// Other include files, declarations, and non-Xerces-C++ initializations.
using namespace xercesc;
int main(int argc, char* argv[])
{
try {
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch) {
// Do your failure processing here
return 1;
}
// Do your actual work with Xerces-C++ here.
XMLPlatformUtils::Terminate();
// Other terminations and cleanup.
return 0;
}
結果、エラーは発生しなかったため、正しく設定できていることが分かった。
以上で一連の設定が完了である。
6. 終わりに
C++の標準ライブラリには、XMLを取り扱うライブラリが存在しない。また、自力でXMLパーサーを作るのは非常に手間がかかる。xercesなどのライブラリを使用すると、便利になる。
今回は、Visual Studio 2022でXercisを使用する例を作成したので、興味ある人は活用してみてほしい。