FireMonkeyのメモ

C++ Builder XE4のFireMonkeyでMac OS Xのターゲットを開発するには、
一度はXCodeとXCode Command Line Toolsの両方ともインストールしたMac OS Xを用意してC++ BuilderをインストールしたWindowsとMac OS XをTCP/IPで接続しない限りコンパイルができない。
そうするとMac OS X側からWindowsにC言語系のヘッダファイルなどがコピーされる。
普通は最初のコンパイル時に自動的にコピーされるが、XCodeとXCode Command Line ToolsをMac OS Xにインストールしていなかったなどでタイミングを逃した場合は、プロジェクトマネージャのターゲットプラットフォーム(OSX32)の下のOS X - Coomand Line Tools 10.x.x....を右クリックしてSDKの編集を選択しローカルファイルキャッシュの更新のボタンをクリックすると再取り込みする。
私の環境の場合(Mac OS X 10.8とX Code 4.6.3)一部のヘッダファイルが取り込まれずにCoreText/CoreText.hと、ImageIO/ImageIO.hが無いとエラーが出た。
手動でCoreText.hとImageIO.hがあるディレクトリのファイル全てをWindows側にコピーして無事コンパイルできるようになった。
ここで、Mac OS X側のどのファイルをWindows側のどこのディレクトリにコピーすればいいのか自分が考えることができないとコンパイルはできない。
Windows側に正常にコピーされると、もうMac OS Xに接続しなくてもWindows単体でコンパイルができてMac OS Xバイナリが作れる。
ただし、Windows単体ではMac OS Xバイナリの実行やデバックはできない。
Mac OS Xを接続していればリモートで実行やデバッグができる。
同じFireMonkeyを使ってもWindowsとMac OS Xではソース互換は思ったより高くないことに後で気がついた。
WindowsのFireMonkeyで正しく動くソースがMac OS Xをターゲットにした途端にエラーが出てコンパイルできなかったりする。
多くは関数の引数をキャストすれば直り、WideStringのCopy()で引数が違うとエラーが出るのはKylix3 C++のCLXとC++ Builder 6のCLXの時と同じだった。
Mac OS X版のFireMonkeyはKylix3 C++では出なかったエラーまでいろいろ出ている。
istreamにget()がないから使うとエラーになるし、あとは理由不明で宣言の構文エラーとか、「テンプレートはクラスまたは関数でなければならない」というエラーとか。