連載
» 2007年12月27日 04時23分 公開

Undocumented Mac OS X:第13回 Universal Binary【後編】 (4/4)

[白山貴之,ITmedia]
前のページへ 1|2|3|4       

コラム PowerPCとIntel CPUで異なるターゲットSDKを使用する

 本文中で説明した方法は、PowerPC向けコードとIntel CPU向けコードが、同じバージョンのMac OS Xをサポートする場合に特化されている。Intel CPU向けのMac OS Xは10.4.4以降しか存在せず*、一方Mac OS X 10.3(Panther)を使用するユーザーはまだまだ多い。せっかくUniversal Binaryなのに対象バージョンを10.4以降のみとしたり、10.3とそれ以前のPowerPC版と10.4以降を別ファイルにするのではありがたみが半減する。現実的なアプリケーションとするためには、PowerPC向けにはターゲットSDKにMac OS X 10.3.9を、Intel CPU向けにはMac OS X 10.4.4を使うようにするべきであろう。

 Xcode付属のドキュメントである「Cross-Development Pro

gramming Guide」の「クロス開発とUniversal Binary」の項目で、その方法が説明されている。手順だけをザッと述べると次のとおりだ。

  • プロジェクトを選択し、メニューから[情報を見る]を選択、情報パネルを開く
  • 「ビルド」タブを選択
  • パネル下部の[+]ボタンを押し、リストAにある設定を追加する(図A)
設定 意味 値の例
GCC_VERSION_i386 コンパイルに使うGCCのバージョンを指定 4.0
GCC_VERSION_ppc コンパイルに使うGCCのバージョンを指定 3.3
MACOSX_DEPLOYMENT_TARGET_i386 ターゲットにするMac OS Xのバージョンを指定 10.4
MACOSX_DEPLOYMENT_TARGET_ppc ターゲットにするMac OS Xのバージョンを指定 10.3
SDKROOT_i386 ターゲットSDKのパスを指定 /Developer/SDKs/MacOSX10.4u.sdk
SDKROOT_ppc ターゲットSDKのパスを指定 /Developer/SDKs/MacOSX10.3.9.sdk
リストA 追加すべきオプション一覧

 必須項目は、「MACOSX_DEPLOYMENT_TARGET_<アーキテクチャ名>」と「SDKROOT_<アーキテクチャ名>」の2点だ。前者はビルドツール群にターゲットとなるMac OS Xのバージョンを伝え、後者はターゲットSDKのパスを伝える。

 開発言語としてC++もしくはObjective-C++を使用している場合は、必ず「GCC_VERSION_<アーキテクチャ名>」も併せて指定する。GCC 4.0ではC++のABIが変更されているため、C++のソースがある場合、10.4以前で動作するバイナリを生成できないからだ。Carbonベース、あるいはQuickTimeを使ったアプリケーション、そしてIOKitを用いたデバイスドライバなどでC++は使われている。それらのソフトウェアを開発している場合は注意しよう。

図A 図A 下の[+]ボタンを押し項目を増やした後、それぞれを記入する

このページで出てきた専門用語

Intel CPU向けのMac OS Xは10.4.4以降しか存在せず

Intel CPUを搭載したMacが発表されるまでの間、開発者向けの開発・評価用にDTK(Development Transition Kit)という、Pentium 4を搭載したマシンが貸与されており、そこで動作するMac OS Xは10.4.1〜10.4.3であったとされている。ただし、DTK版は正規のバージョンではなく、貸与された機材とともに回収されているため、ここでは考慮していない。


関連キーワード

Mac | Mac OS X | SDK | x86 | Apple


本記事は、オープンソースマガジン2006年5月号「Undocumented Mac OS X」を再構成したものです。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ