Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

SDK設定がビルドにどのように影響するか

Xcodeでは、あるプロジェクトに対してSDKを選択すると、SDKROOTが選択されたSDKのパスに設定され、そのパスが、フレームワーク、ヘッダ、ライブラリの検索パスに暗黙的に追加されます。makefileベースのプロジェクトでは、コンパイラとリンカに渡すオプションによって、この処理が実行されます。

新しい検索パス内のファイルの1つに、$(SDKROOT)/usr/include/AvailabilityMacros.hがあります。これは、弱いリンクのサポートを機能させる主要ヘッダです。このヘッダファイルでは、プリプロセッサマクロMAC_OS_X_VERSION_MAX_ALLOWEDが、そのSDKによって表されるバージョンに相当する定数に設定されています(たとえば、Mac OS X v10.2.8であれば、1028)。

Mac OS XのデプロイメントOSを選択したら、“「クロス開発のためのプロジェクトの設定」”で解説しているように、選択したメジャーシステムバージョン(10.1、10.2、10.3、10.4)に相当する定数値をMACOSX_DEPLOYMENT_TARGETビルド設定に割り当てます。 コンパイラは、このビルド設定を使って弱いリンクを可能にします。コンパイラはまた、この値を使って、プリプロセッサシンボルMAC_OS_X_VERSION_MIN_REQUIREDも設定します。このシンボルは、弱いリンクとする関数を指定するために、ヘッダAvailabilityMacros.hによって使用されます。

Important: Xcodeにおいて、プロジェクトに対するSDKを選択すると(“「クロス開発のためのプロジェクトの設定」”を参照)、選択したSDKは、プロジェクト内のすべてのターゲットに適用されます(すべてのターゲットが、指定したSDKのヘッダとライブラリを使ってビルドされます)。ターゲットごとにSDKを指定することもできますが、そのようにすると、プロジェクト全体に作用するようなSDK設定を使用している他のXcodeの機能の処理が妨げられる可能性があります。これについては、“「SDK設定がXcodeの他の機能にどのように影響するか」”で解説しています。デプロイメントOSは、“「クロス開発のためのプロジェクトの設定」”で解説しているように、ターゲットごとに、またはプロジェクト内のすべてのターゲットを対象に選択できます。ターゲットは、指定したOSのバージョンのシステムまでさかのぼってのデプロイメントが可能です。ビルド設定とそれらの優先順位については、『Xcode 2.2 User Guide』を参照してください。

プリプロセッサシンボルMAC_OS_X_VERSION_MIN_REQUIREDおよびMAC_OS_X_VERSION_MAX_ALLOWEDは、AvailabilityMacros.hヘッダファイルによって、GCCコンパイラディレクティブである__attribute__((weak_import))および__attribute__((deprecated))を使用して他のいくつかのプリプロセッサシンボルを定義する目的で使用されます。これらのシンボルは、Carbonヘッダファイルにおいて(さらに、すべてではありませんが多くのCocoaのヘッダにおいても)、各バージョンのオペレーティングシステムでどの関数やメソッドの呼び出しが利用できるかを定義するために、広範囲に使用されています。

これらのアクションの組み合わせにより、以下のようなことが起こります。

注: Mac OS Xバージョン10.2以降のCarbonおよびCocoaフレームワークのヘッダでは、自動的にAvailabilityMacros.hがインクルードされますが、バージョン10.1(AvailabilityMacros.hの導入前)ではインクルードされません。

1つのソースコードのセットを複数の異なるSDKで簡単に利用できるように、Mac OS X v10.1.5のSDKには、AvailabilityMacros.hのコピーが含まれています。10.1.5 SDKを使用するコードと利用可否判定マクロは、次のようなステートメント(プレフィックスヘッダファイルに追加できます)を使用して、そのヘッダを明示的にインクルードすることで正常にコンパイルできます。

#include <AvailabilityMacros.h>

例については、“「個々のSDKのための条件付きコンパイル」”を参照してください。



< Previous PageNext Page >


Last updated: 2005-11-09




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice