Xerces-C++ Framework をインストール

ココからソースをダウンロードできる。展開すると中に Projects/MacOS/Xcode/XercesLib/XercesLib.xcodeproj という感じで Xcode のプロジェクトファイルがあるので、これをダブルクリック! いつもの[プロジェクトルートとして使用するディレクトリを選択]はそのまま XercesLib フォルダを選ぶ。で、[すべてのターゲットをクリーニング]をしてからビルド。結構時間がかかるけど、エラー無くビルドは終了。でも、できあがった Xerces.framework にはヘッダファイルがない。というわけで、Xerces.framework/Versions/A/ に Headers フォルダを作ってそこに src フォルダの下にある xerces フォルダをコピー。その後で Xerces.framework フォルダにさっき作った Headers フォルダへのシンボリックリンクを張る。こんな感じ。

paraches-no-macbook-air:Xerces.framework paraches$ ln -s Versions/Current/Headers Headers
paraches-no-macbook-air:Xerces.framework paraches$ ls -al
total 40
drwxr-xr-x  7 paraches  staff   238  7  5 23:37 .
drwxr-xr-x@ 7 paraches  staff   238  7  5 23:36 ..
-rw-r--r--@ 1 paraches  staff  6148  7  5 23:37 .DS_Store
lrwxr-xr-x  1 paraches  staff    24  7  5 23:37 Headers -> Versions/Current/Headers
lrwxr-xr-x  1 paraches  staff    26  7  5 23:36 Resources -> Versions/Current/Resources
drwxr-xr-x  5 paraches  staff   170  7  5 18:14 Versions
lrwxr-xr-x  1 paraches  staff    23  7  5 23:36 Xerces -> Versions/Current/Xerces

これで Xerces.framework のできあがり。(だと思うんだけど…)
一応、/Library/Frameworks フォルダに入れておいた。

Glest 3.1.2 をビルド

Glest 3.1.2 のソースはココから落とせる。これを展開すると Xcode フォルダに Glest.xcodeproj があるのでダブルクリックで Xcode 起動。さっそくビルドというわけにはいかなくて、Xcode フォルダにある PrvFrameworks フォルダに Vorbis/Ogg/SDL/Xerces の4つの framework を入れなければいけない。([グループとファイル]の Frameworks/Linked Frameworks にある4つの framework が赤くなってる!)というわけで、4つの framework を /Library/Frameworks フォルダから PrvFrameworks フォルダへコピー。これでビルドの準備完了。ビルドボタンを押して凄く長い時間待つだけ…

が、ここで 17個のエラー!

		  "xercesc_2_8::XMLUni::fgXercescDefaultLocale", referenced from:
		      __ZN11xercesc_2_86XMLUni22fgXercescDefaultLocaleE$non_lazy_ptr in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::DOMException::~DOMException()", referenced from:
		      Shared::Xml::XmlIo::XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLString::transcode(unsigned short const*)", referenced from:
		      Shared::Xml::XmlIo::save(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Shared::Xml::XmlNode const*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlIo::load(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::DOMException::DOMException(xercesc_2_8::DOMException const&)", referenced from:
		      Shared::Xml::XmlIo::XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::LocalFileFormatTarget::LocalFileFormatTarget(char const*, xercesc_2_8::MemoryManager*)", referenced from:
		      Shared::Xml::XmlIo::save(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Shared::Xml::XmlNode const*)in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLString::transcode(unsigned short const*, char*, unsigned int, xercesc_2_8::MemoryManager*)", referenced from:
		      Shared::Xml::XmlAttribute::XmlAttribute(xercesc_2_8::DOMNode*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlAttribute::XmlAttribute(xercesc_2_8::DOMNode*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlNode::XmlNode(xercesc_2_8::DOMNode*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::ErrorHandler::handleError(xercesc_2_8::DOMError const&)  in libglestlib.a(xml_parser.o)
		      Shared::Xml::ErrorHandler::handleError(xercesc_2_8::DOMError const&)  in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLUni::fgDOMValidation", referenced from:
		      __ZN11xercesc_2_86XMLUni15fgDOMValidationE$non_lazy_ptr in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLPlatformUtils::Terminate()", referenced from:
		      Shared::Xml::XmlIo::~XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned short const*)", referenced from:
		      Shared::Xml::XmlIo::XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLPlatformUtils::Initialize(char const*, char const*, xercesc_2_8::PanicHandler*, xercesc_2_8::MemoryManager*, bool)", referenced from:
		      Shared::Xml::XmlIo::XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLUni::fgXercesSchemaFullChecking", referenced from:
		      __ZN11xercesc_2_86XMLUni26fgXercesSchemaFullCheckingE$non_lazy_ptr in libglestlib.a(xml_parser.o)
		  "typeinfo for xercesc_2_8::XMLException", referenced from:
		      GCC_except_table22 in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLUni::fgDOMWRTFormatPrettyPrint", referenced from:
		      __ZN11xercesc_2_86XMLUni25fgDOMWRTFormatPrettyPrintE$non_lazy_ptr in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLPlatformUtils::fgMemoryManager", referenced from:
		      __ZN11xercesc_2_816XMLPlatformUtils15fgMemoryManagerE$non_lazy_ptr in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::XMLString::transcode(char const*, unsigned short*, unsigned int, xercesc_2_8::MemoryManager*)", referenced from:
		      Shared::Xml::XmlNode::buildElement(xercesc_2_8::DOMDocument*) const  in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlNode::buildElement(xercesc_2_8::DOMDocument*) const  in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlNode::buildElement(xercesc_2_8::DOMDocument*) const  in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlIo::save(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Shared::Xml::XmlNode const*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlIo::XmlIo()in libglestlib.a(xml_parser.o)
		  "xercesc_2_8::LocalFileFormatTarget::~LocalFileFormatTarget()", referenced from:
		      Shared::Xml::XmlIo::save(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Shared::Xml::XmlNode const*)in libglestlib.a(xml_parser.o)
		      Shared::Xml::XmlIo::save(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Shared::Xml::XmlNode const*)in libglestlib.a(xml_parser.o)
		  "typeinfo for xercesc_2_8::DOMException", referenced from:
		      GCC_except_table19 in libglestlib.a(xml_parser.o)
		      GCC_except_table20 in libglestlib.a(xml_parser.o)
		      GCC_except_table22 in libglestlib.a(xml_parser.o)
		ld: symbol(s) not found
		collect2: ld returned 1 exit status
Build failed (17 個のエラー, 166 個の警告)

何? 何言ってるの???
シンボルが見つからないからリンクできないよ!ってエラーなんだと思うけど、それってどうすりゃ良いのよ???

Xerces.framework をダウンロード

というわけで、あれこれ調べてみたりしたんだけども、これについてはお手上げ状態…。なんだけど、MacOS X 用にビルドされている Xerces.framework をココで発見!早速ダウンロードしてきた。
まずは展開してみると…を!ちゃんとヘッダファイルもついてるよ! さっそく Xerces.framework を Glest の PrvFrameworks フォルダへコピー。[すべてのターゲットをクリーニング]してからビルド!凄く長い時間の後でビルドは無事終了!!!
できあがった Glest ファイルをダブルクリックして…ちゃんと起動も確認。


というわけで、落としてきた Xerces.framework を使ったら問題なくビルドできた。と、言うことは…自分でビルドした Xerces.framework が駄目だったということだな。う〜ん、何がいけなかったんだろう?ビルドはエラー無しでできたのに…。自分でヘッダファイルをコピーしてリンク張ったりしたのがいけない???