Cocoaアプリでライブラリを使用する方法

CocoaアプリケーションのプロジェクトにC/C++で作成しているStaticLibraryプロジェクトやCocoaFrameworkを組み込む方法についてです。開発環境はXcode 4です。
まず実行ファイルの出力先を相対パスに設定しておきます。
Xcode>Preferences>Locations>Derived Data>Relative

StaticLibrary用プロジェクトの作成

File>New>New Project>MacOSX>Framework&Library>C/C++Library>Next>ProductNameに名称入力"StaticLibForCocoa", Type:Static>プロジェクトのパスを指定、""を選択>"Create"
//StaticLibForCocoa内にStaticLibForCocoa.xcodeprojが作成される。
プロジェクトにC++クラスを追加します
StaticLib.h

class StaticLib{
public:    
    static void print();  
};

StaticLib.cpp

#include "StaticLib.h"
#include <stdio.h>
void StaticLib::print(){
    printf("Staticlib::print");
}

Cocoaアプリケーションプロジェクトの作成

File>New>New Project>MacOSX>Application>Cocoa Application>Next>ProductNameに名称入力"CocoaLibUse", Type:Static>プロジェクトのパスを指定、""を選択>"Create"
//CocoaLibUse内にCocoaLibUse.xcodeprojが作成される。

CocoaプロジェクトにStaticLibrary用プロジェクトを読み込ませる

File>Add Files To "CocoaLibUse">スタティックライブラリ用プロジェクトStaticLibForCocoa.xcodeprojを選択する>Add
これでCocoaLibUse.xcodeproj内にStaticLibForCocoa.xcodeprojが追加できます。

Staticライブラリ用プロジェクトのターゲットを追加する

Cocoaプロジェクトのビルドと同時にStaticライブラリ用プロジェクトもビルドされるように設定します
Product>Edit Scheme>Build>"+">StaticLibForCocoaを選択>Add
Staticライブラリ側のターゲットを追加することができました。

ライブラリを追加する

リンクするライブラリ一覧にlibStaticLibForCocoa.aを加えます。
CocoaLibUseのターゲットを選択>Build Phases>Link Binary With Libraries>"+">Workspace>"libStaticLibForCocoa.a"を選択>Add
Build Phases>TargetDependencies>"+">StaticLibForCocoaを選択>Add

Staticライブラリのヘッダインクルードパスを設定する

ヘッダStaticLib.hへのパスを通します。
CocoaLibUseのターゲットを選択>Build Settings>Search Paths>Header Search Paths>ターゲットの項目をクリック>"+">Recursiveにチェックを入れる>Pathに"../StaticLibForCocoa"を入力

Staticライブラリを利用する

ファイルをObjective-C++に対応させるために拡張子を.mmにかえます。(CocoaLibUseAppDelegate.m→CocoaLibUseAppDelegate.mmに変更)
さらにCocoaLibUse内のヘッダファイルの拡張子を.hhに変更します。
CocoaLibUseAppDelegate.h→CocoaLibUseAppDelegate.hh
(ライブラリ側のヘッダと".hh"をインルードしているobjective-cのヘッダは全て.hhに変更)
StaticLib.hをimportして、StaticLibクラスを利用します。呼び出し側のコードはC++スタイルで記述します。
CocoaLibUse.mm

#import "CocoaLibUseAppDelegate.hh"
#import "StaticLib.h"

@implementation CocoaLibUseAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    StaticLib::print();
}
@end

最後にビルド・実行して

Staticlib::print

がコンソールに表示されれば成功です。
次にカスタムCocoaFrameworkを別プロジェクトから使用する手順です。

CocoaFrameworkプロジェクトの作成

File>New>New Project>MacOSX>Framework&Library>CocoaFramework>Next>ProductNameに名称入力"MyCocoaFramework",プロジェクトのパスを指定、""を選択>"Create"
//MyCocoaFramework内にMyCocoaFramework.xcodeprojが作成される。
プロジェクトにObjective-Cクラスを追加する
MyCocoaFramework.h

@interface MyCocoaFramework : NSObject
+(void)API;
@end

MyCocoaFramework.m

#import "MyCocoaFramework.h"
@implementation MyCocoaFramework
+(void)API
{
    NSLog(@"MyCocoaFramework API was called.");
}
@end

CocoaFrameworkの利用

Cocoaプロジェクトに作成したFrameworkプロジェクトを読み込ませます。
File>Add Files To "CocoaLibUse">スタティックライブラリ用プロジェクトMyCocoaFramework.xcodeprojを選択する>Add
CocoaLibUse.xcodeproj内にMyCocoaFramework.xcodeprojが追加されます。

Staticライブラリ用プロジェクトのターゲット・ライブラリを追加する

先ほどと同様に
Product>Edit Scheme>Build>"+">MyCocoaFrameworkを選択>Add
さらに
CocoaLibUseのターゲットを選択>Build Phases>Link Binary With Libraries>"+">Workspace>"MyCocoaFramework.framework"を選択>Add

Staticライブラリのヘッダインクルードパスを設定する

CocoaLibUseのターゲットを選択>Build Settings>Search Paths>Header Search Paths>ターゲットの項目をクリック>"+">Recursiveにチェックを入れる>Pathに"../MyCocoaFramework"を入力

frameworkを利用する

CocoaLibUseAppDelegateからMyCocoaFrameworkを呼び出してみます。
CocoaLibUseAppDelegate.m

#import "CocoaLibUseAppDelegate.h"
#import "MyCocoaFramework.h"

@implementation CocoaLibUseAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
   [MyCocoaFramework API];
}
@end

最後にビルド・実行して

MyCocoaFramework API was called.

がコンソールに表示されれば成功です。