6

他のプロジェクトのフレームワーク/静的ライブラリのビルド ターゲットを Xcode で参照できることは承知していますが、参照したいプロジェクトにフレームワーク/静的ライブラリのターゲットがない場合、別の Xcode プロジェクトのソース コードを直接参照できますか? サブプロジェクトと Xcode 4 ワークスペースの両方を使用してこれを実行しようとしましたが、役に立ちませんでした。ヘッダー検索パスを調整した後、すべての #import ステートメントは正しく機能しますが、シンボルが見つからないという厄介なコンパイラ エラーが発生します。

setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -F/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -filelist /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Intermediates/.build/Debug/.build/Objects-normal/x86_64/.LinkFileList -mmacosx-version-min=10.7 -fobjc-arc -framework Cocoa -o /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug/.app/Contents/MacOS/

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MagicalRecordHelpers", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_MRCoreDataAction", referenced from:
      objc-class-ref in ItemsArrayController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

また、この新しい Xcode 4 ワークスペースはどうなっていますか? また、サブプロジェクトとは具体的にどのように違うのでしょうか? 私が見つけた唯一のことは、それらが視覚的に異なって見えることです...

ワークスペース

ここに画像の説明を入力

サブプロジェクト

ここに画像の説明を入力

4

1 に答える 1

6

最初の質問に対する答えは、明らかに「Xcode は別のプロジェクトのソース ファイルを参照できません」です。ソースファイル (.m ファイル) をコンパイルするため。Xcode プロジェクトは、それらへの直接参照を保持する必要があります。Target setting -> Build Phases -> Compiled resources に移動して、何がコンパイルされるかを確認できます。ファイルがプロジェクトに直接追加されない限り、それらはコンパイルされるリソースの下に表示されないことに注意してください。ただし、ヘッダーは異なるプロジェクト間で通信できます。

編集

2 番目の質問に対する答えは、Xcode 3 では依存関係を常に明示的に管理する必要があるのに対し、Xcode 4 ワークスペースでは、ターゲットの依存関係がすべて同じワークスペースにある限り、暗黙的に管理できるということです。依存関係を指定するために必要なのは、リンクされたライブラリとして参照したい他のプロジェクトの製品を概要ページに追加することだけです。これらの調査結果には時間がかかりすぎました.. (完全な生産的な 1 日)、これに関するドキュメントは改善可能であり、間違いなく改善する必要があります!

于 2012-01-03T21:42:41.420 に答える