タイトル【小池邦人のプログラミング日記】2000/7/4<Mac OS Xへの道 Coorbon SDK その3>カテゴリー開発情報, Carbon/CF, 小池邦人のプログラミング日記
作成日2000/7/4 15:25:2作成者小池邦人
次に準備するものはC言語用のヘッダーファイルです。Carbon 1.0.4 SDKの「Carbon Support」フォルダ内の「Universal Interfaces」フォルダ内に、リンク時に用いるすべてのヘッダーファイルがあります。このうち「CIncludes」フォルダ(C言語用)の中身をすべてMetrowerks CodeWarriorの以下のフォルダに入れて差し替えます。

MacOS Support/Universal/Interfaces/CIncludes

Carbon 1.0.4 SDKに添付されているヘッダーのバージョンは、なぜだかv3.3.1です。しかし、最新のバージョンはv3.3.2となっていますので、AppleのSDKサイト
 http://developer.apple.com/sdk/
から「Universal Interfaces 3.3.2 」を入手して、そちらを利用した方が良いでしょう。ADCメンバーサイトからは「Universal Interfaces 3.4d5」というバージョンもダウンロードできますが、こちらは開発途中のCarbonLib v1.1用ですので、現状では使わないでください。(まだ色々と不都合があるみたい...)現在のプロジェクトで古いバージョンのヘッダーファイルを利用していると、新しいヘッダーへの書き換えにより整合性がくずれてエラーが出る場合があります。プロジェクトに対してかなり古いヘッダーファイルを利用している場合には、最新の物へ更新する作業には細心の注意が必要となります。心して掛かりましょう!

さて、ヘッダーファイルをCarbon APIコンパチブルとして利用するには、ソースの先頭に...

#define TARGET_API_MAC_CARBON 1

というコンディショナル・マクロを定義して、このプロジェクトがCarbon API対応であることをコンパイラに指示します。例えば、ソースファイルをひとつしか利用していないプロジェクトでしたら、ソースの先頭に上記の定義を記述しておけばOKです。


もっと良い方法は、CarbonPrefix.hという上記定義のみを記載したヘッダーファイルを作ります。これをCodeWarriorのIDEのSettingsダイアログの「C/C++ Language」のパネルで「Prefix File」として定義しておきます。



Apple社が提供しているCarbon化「SimpleText」のサンプルプロジェクトなどでは、この方法が取られています。

ところが、私などが開発している大規模プロジェクトでは、大量のヘッダーファイルをソースコードの先頭に記載するのを避けるために(コンパイルのスピードを上げるために)Metrowerks社が標準添付している「MacHeadersPPC」というPrefix Fileを利用しています。ですから、そうした場合には、このMacHeadersPPCファイル自身をCarbon対応としてプリコンパイルしておく必要があるわけです。このMacHeadersファイルは、Metrowerks CodeWarriorの以下のフォルダ内にある「MacHeaders.mcp」というプロジェクトをMakeして作成することができます。

MacOS Support/MacHeaders

プロジェクトをMakeすると、68K用やPPC用またはC++用など、ターゲット種類別に6つのMacHeadersファイルが作成されます。その内容は「MacHeaders.c」というファイルに記載されています。このソースコードで、でコメントで囲われていないヘッダーファイル(例えば#include など)のみがプリコンパイルされるわけです。もし新たにプリコンパイルしたいヘッダーファイルを追加したい時には、MacHeaders.cを書き直せば、自分の好みのMacHeadersファイルに作り直すことができるます。

Carbon用のMacHeadersを作成する場合には、MacHeaders.cの先頭に、Carbon対応のコンディショナル・マクロを定義してMakeし直せばOKです。


ただし、このままMakeしてしまうと、以前のMacHeadersファイルを上書きしてしまいますので、とりあえず前のファイルは別フォルダに待避しておき、出来上がった新しいCarbon対応のMacHeadersファイルの方を「MacHeadersCarbon」等に名称変更して利用するのが最善です。多分、次回のMac OS X対応のMetrowerks CodeWarriorのバージョンには、Carbon対応のMacHeaders(Prefix File)が添付されると思いますが、それまではこうした自作MacHeadersで急場しのぐことにします。

最後は、Carbon用のリソースの話です。実はMac OS 8や9用のCarbonアプリケーションには特別なリソースは必要ありません。Carbon化されたアプリケーションをMac OS Xで起動する場合にのみ、リソースタイプ=’carb’、ID=0のリソースをアプリに付加しておく必要があります。


現状のMac OS Xでは、このリソースを添付しないと、CarbonアプリケーションでもClassic環境で起動してしまいます。ただ、この仕様が最後まで残るか(Appleにより残されるか)どうかは何とも言えないと思います。

次回は、古いソースコード(プロジェクト)をCarbon化する時の要点を簡単にまとめてみたいと思います。
関連リンクオッティモ