2009-07-22 12 views
0

コンポーネントのCocoa(MacOSX)とCocoaTouch(iPhone)バージョンの両方を含むXcodeプロジェクトファイルを作成することはできますか?Cocoa(OSX)とCocoaTouch(iPhone)コンポーネントは、同じXcodeプロジェクトファイルにありますか?

クロスコンパイラを呼び出すために(そしてすべてのCocoaTouchフレームワークを見つけて適切にするために)プロジェクト設定で「Base SDK for All Configurations」を設定する必要があることを認識するまで、 Xcodeによって処理されます)。

プロジェクト全体の設定がなので、MacOSXとiPhoneOSの両方のターゲットを同じプロジェクトファイルに含めることはできません。指定

:(iPhone専用のターゲットが使用する)xcconfigファイル内

SDKROOT = iphoneos3.0 

が動作していないようでした。

+0

こんにちは、jhoule、 私はなぜあなたは単一のプロジェクトで両方を持つ必要があるのだろうか?それは避けることができるシナリオのようです。 – paulthenerd

+0

これは主にコード構成の問題です。 LibA、LibB、LibCがあるとします。私は現在、それぞれの.xcodeprojファイルを持っており、かなり独立しています。 プラットフォームごとに分割する必要がある場合(OSX vs. iPhone)、私は6つのプロジェクトファイルを持つことになります。 LibAからソースファイルを追加/削除すると、2つのプロジェクトファイルを更新する必要があります。プリプロセッサを定義する必要がある時はいつでも、私書箱など – jhoule

答えて

1

はい、可能ですが、いくつかの不具合があります。

まず、いくつかの方法でBase SDKを上書きできます。 1つは、インスペクタの下部にあるギアにあり、「ビルド設定条件を追加」を使用すると、ターゲットアーキテクチャなどに基づいてビルド設定を条件付きで調整できます。

第2に、プロジェクトターゲットごとにオーバーライドされています。したがって、別個のターゲットを使用している場合は、SDKROOTを使用してさまざまなターゲットにSDKROOTを追加できます。

第3に、Xcodeウィンドウのポップアップで選択されたSDKが、その他のものよりも優先されます。そのポップアップに「Base SDK」以外のものがあると、そのSDKが使用されます。また、「Base SDK」から「iPhone Simulator」に切り替えると、現在選択されているSDKをサポートしていないターゲットにターゲットを切り替えると、選択が解除されているように見えますが、実際には正しく表示されませんBase SDKを自動再生する場合は、ポップアップで再選択する必要があります。

集計の一部として複数のarchを適切に組み合わせることができません(たとえば、後でターゲットビルディングでビルドフェーズとして使用できるようにビルドされたリソースを前処理するOS Xターゲットがあるなど) iPhoneアプリ)。

+0

それは動作するようになった。私は、依存ターゲット内に迷子SDKROOTを持っていました。 また、あなたの「再選択」トリックについては、SDKROOTを変更することはXcodeではやや脆いことに気がつきました。変更するたびにプロジェクトファイルを閉じて再オープンします。 助けてくれてありがとう!あなたが記述した複数のアーチの状況を使用して解決したら、ここにコメントを追加します。 – jhoule

関連する問題