フレームワークとは、オプションとしてヘッダファイルと共にパッケージされている共有ライブラリに対するAppleの呼び方です。プロジェクトにおけるフレームワークの使用は、以前の CFMエクスターナルオブジェクトの ”MaxLib.stub”型のファイルに替わるものです。
Maxに関係したフレームワークは4つありますが、これらはエクスターナルオブジェクト用プロジェクトに含まれる必要があり、さらにビルドするターゲットで使用可能になっていなくてはなりません。どのようなMaxエクスターナルをビルドする場合でも、MaxAPI.framework は必須です。
MSPで動作するエクスターナルオブジェクトをビルドする場合、MaxAPI.framework と MaxAudioAPI.framework の両方が必要になります。
Jitterオブジェクトをビルドする場合、MaxAPI.framework と JitterAPI.framework (Mach-O Jitter SDKで配布)の両方が必要になります。Jitterオブジェクトがオーディオを扱う場合には、MaxAudioAPI.frameworkも必要になるでしょう。
JavaScript で動作するエクスターナルオブジェクトを書く場合には、MaxJSRef.framework を含める必要があります。これはMaxアプリーケーションにバンドルされ、Frameworksフォルダから得ることができます。
フレームワークをプロジェクトに追加するには、プロジェクトウィンドウの左側にある External Frameworks and Libraries というフォルダをクリックします。そして、プロジェクトメニューから「プロジェクトに追加」を選択し、/ライブラリ/frameworks へ移動して必要なフレームワークを選択します。
ソースコードの中で、手作業で“ext.h”や”z_dsp.h”のようにファイルをインクルードする代わりに、プロジェクトのプリフィックスファイルに書き込むことで、MaxAPI.framework や MaxAudioAPI.framework のためのヘッダをインクルードすることができます。この方法は、ヘッダファイルがプリコンパイルされるために、僅かですが速度が向上します。しかし、クロスプラットフォームでのソースコードの互換性を考える場合、プリフィックスヘッダはWindowsのVisual C++ではサポートされないため、この方法は使わない方がよいでしょう。
SDK サンプルプロジェクトで使用されるプリフィックスヘッダファイルはmax_sdk_macho_prefis.pchとして、c74support フォルダの中の max-includes フォルダにあります。これは単にこのようなものです。
#include <Carbon/Carbon.h>
これは 「Carbon framework にあるヘッダファイルCarbon.h をインクルードする」ことを意味しています。
Maxヘッダをインクルードするためには、必然的に次の行を加えます。
#include <MaxAPI/MaxAPI.h>
MSPヘッダをインクルードする場合には
#include <MaxAudioAPI/MaxAudioAPI.h>
を追加します。
この方法による利点の1つは、あなたのプロジェクトフォルダの中にプレフィックスヘッダファイルを置くことによって、SDKで使っているフォルダ構造を使わずに済むということです。なぜなら、フレームワークサーチバスを使って参照することで、あなたのコンピュータ全体に対してグローバルになるからです。
その一方で、このスタイルによるヘッダファイルのインクルードが適当かどうかは、クロスプラットフォーム用のソースであることが重要であるかどうかを考慮する必要があります。
Max4.5とMax4.6での大きな変更点の1つに、「フレームワークをどのように使うか」という点があります。Max4.5が /Library/Frameworks の中のフレームワークに依存していたのに対して、Max4.6では、/Library/Frameworks にフレームワークを置く替わりに、アプリケーションバンドルの中にプライベートなフレームワークを置くとというコンセプトを導入しています。プライベートフレームワークを使うことによる唯一の問題は、エクスターナルオブジェクトをビルドする際にこれらを利用できないという点です。そんなわけで、私たちはSDKに含まれるフレームワークをその場所にコピーするように要請したのです。
プライベートフレームワークの機能は、Maxユーザが完全に独立したスタンドアロン・アプリケーションを開発することを可能にします。これはフレームワークや他のライブラリなしで、どんなMacでも動作します。
SDKに含まれるフレームワークは、内部的なバグフィックスを除いては、現在出荷されているアプリケーションに含まれるものと同じです。これらのフレームワークは /Library/Frameworks の中でもアプリケーションのプライベートフレームワークフォルダの内部でも動作するような特別なインストールパスを持っています。あなたのエクスターナルオブジェクトがアプリケーションの内部に置かれたMaxAPI.framework や MaxAudioAPI.framework の中にあるライブラリを見つけることができるように、それらは特別なインストールパスを含んだフレームワークとリンクする必要があります。
このことは、あなたが現在バージョン4.5を持っていて、まだSDKのフレームワークを/Library/Frameworksにコピーしていないという場合を除いて、重要なことではないかも知れません。これらの古いバージョンのものをSDKのフレームワークで上書きすることは重要です。それによってあなたのエクスターナルはアプリケーション内部の必要なライブラリを見つけることができるのです。