« 東芝 AK-G200 | メイン | 写真日記27 »

2006年1月 7日

Universal Binaryへの対応 その1

カテゴリー: プログラミング

来週からサンフランシスコで行われるMacworld Conferense & Expoで、インテルCPUのMacが発表(発売?)されるという噂があります。以前の予定では今年の夏頃だったはずですが、もし本当なら私もそろそろ準備を始めなければなりません。いちおう情報収集はしていたのですが、実際に作ってみることにしました。

とりあえずアップルのサイトにあるUniversal Binary Programming Guidelinesというドキュメントを参考にやってみました。日本語のドキュメントがあるのは嬉しいですね。

まずはXcodeで新規プロジェクトを作ったときの雛形アプリを元にやってみました。とりあえず何の問題もないですね。もちろんインテルCPUのMacはまだないので動作確認はできませんが、問題なくビルドでき、既存のMacで動作しています。Finderの情報ウィンドウにもちゃんと「アーキテクチャ:Intel, PowerPC」と表示されています。

1つだけ面倒だったのは、古いOSバージョンに対応する部分です。Universal Binaryに対応するにはターゲットをMac OS X 10.4以降にして、コンパイラもGCC 4.0以降にしなければならないようですが、これだとMac OS X 10.2.xなどの古いバージョンで動作しません。この問題を解決するには、PPCコードとi386コードで別々に設定をする必要があるようです。

具体的にはCross-Development Programming Guideというドキュメント(こっちは英語)に説明がありますが、簡単に書いてしまえばプロジェクトに以下の6つの設定を加えることになります。

SDKROOT_ppc
SDKROOT_i386
MACOSX_DEPLOYMENT_TARGET_ppc
MACOSX_DEPLOYMENT_TARGET_i386
GCC_VERSION_ppc
GCC_VERSION_i386

分かってしまえばどうということはありませんが、最初からこういう設定をされたテンプレートも用意しておいて欲しいですね。どうもXcodeって過去のOSバージョンに対するサポートが不親切な気がするんですが、こういうところもUNIX的なのかな?

次は自作のアプリケーションをUniversal Binaryに対応してみたいと思います。

続く(予定)


関連リンク
Universal Binaryへの対応 その2 (2006年01月09日)



コメント

こんにちは、ご無沙汰です。
Xcodeまったく使ったことがないに等しいんですが、REALbasicのpluginのUB化で、ちょっと前から使ってますが、Xcodeの使い方知らなくても、いちおうコンパイルは通っているのでいいのですが、単にSDKをMacOSX10.4u.sdkにしてしまうと、古いOSとかで都合が悪いように思って検索していたら、浅利さんのこれが引っ掛かりました。

MACOSX_DEPLOYMENT_TARGET_ppc = 10.3
MACOSX_DEPLOYMENT_TARGET_i386 = 10.4
SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk
SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk
GCC_VERSION_ppc = 3.3
GCC_VERSION_i386 = 4.0

とかにすればいいように書いてあったりするんですが、Xcode 2.3でどこの設定をどう変更すればいいのかネット上で探してもわからなくて(汗)。。そもそも基本的な所を知っていないからいけないんでしょうけど、どう設定すればいいんでしょうか?教えて下さい(><)

投稿者 Micono : 2006年8月24日 17:59

Xcodeのプロジェクトを開くとウィンドウの左側に「グループとファイル」といいう一覧がありますよね。ここのおそらく一番上に青いアイコン(名前はプロジェクト名)があると思うのでダブルクリックすると「プロジェクト“???”の設定」というウィンドウが出ます。ビルドというタブに切り替えて、+ボタンで新規行を追加しながらその6行を書いてやれば良いはずです。

私が試した限りでは、SDKを10.2.8に、GCCを3.3にすれば10.0以降の全てのバージョンで起動するアプリになるようです。

投稿者 浅利 : 2006年8月24日 18:34

ありがとうございます。
そ〜いうことかぁ(汗)まぢスッキリ!
いま、実際にやってみました。
けど、まだIntelマック持っていないので、買わなきゃなんともリリースどころか、テストもできやしないのですわ(汗)。。。
レパードがでるまで我慢しようかと思ってたけど、どれでもいいから買っちゃオッかなぁとか迷い中。。。

投稿者 Micono : 2006年8月25日 00:30

Xcodeって複雑で分かりにくいですよね。私もいまだにあの「グループとファイル」の下のほうに並んでる項目の意味がよく分かりません。ターゲットとか実行可能ファイルとか。

投稿者 浅利 : 2006年8月25日 18:57

よろしければコメントしてください。

※メールアドレス以外の項目はこのページ上に公開されます。個人情報などの入力にはご注意ください。




保存しますか?


「投稿」ボタンを押してから書き込み完了までに多少時間がかかる場合があります。ご了承ください。