2

私は、bitbucket git リポジトリにリンクされている Xcode プロジェクトのマシン A で作業しました。すべての最新かつコミット済みの単体テストは正常に実行されます。

今度は、マシン B で作業したいと思います。Xcode を起動し、リポジトリをクローンすると、すべてのファイルがプロジェクト内にあります。cmd-U を押して単体テストを実行すると、超高速で「合格」するか、まったく実行されません。これは私が得るエラーメッセージです:

objc[6434]: GC: forcing GC OFF because OBJC_DISABLE_GC is set
2013-06-11 10:20:05.935 otest[6434:303] The test bundle at /Users/oliver/Library/Developer/Xcode/DerivedData/TextToolsSystem-celmxjqlddjrjvblrklrnvdpytux/Build/Products/Debug/TextToolsSystemTests.octest could not be loaded because a link error occurred. It is likely that dyld cannot locate a framework framework or library that the the test bundle was linked against, possibly because the framework or library had an incorrect install path at link time.
2013-06-11 10:20:05.942 otest[6436:203] *** NSTask: Task create for path ' TextToolsSystemTests' failed: 22, "Invalid argument". Terminating temporary process.

プロジェクトは追加のフレームワークやライブラリを使用せず、マシン A で正常に動作します。前述のディレクトリのリストは次のようになります。

total 192 -rwxr-xr-x 1 oliver staff 96604 11 Jun 10:20 TextToolsSystemTests

そのファイルはMach-O 64-bit bundle x86_64.

マシン A: MBP、OS X 10.8.2、Xcode 4.6.2
マシン B: MBA、OS X 10.7.5、Xcode 4.6.2
プロジェクトをビルドしてもエラーは発生しません (実行可能な実行可能ファイルがまだありません)。

クローン作成で引き継がれず、機能させるために調整が必要な設定はありますか?

4

1 に答える 1

0

OK、掘り下げた後、解決策を見つけました:

  1. 以前otool -Lは、ターゲットが参照していた必要なライブラリをリストしていました (参照用のこの質問に感謝します)。

  2. 次に、通常は必要ない CoreFoundation などであっても、すべてのライブラリ/フレームワークを手動で追加しました。ただし、含まれていlibobjc.A.dylibます。dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_atomic現在、そのライブラリで予期されていた別のエラーが発生していました。

  3. 次に、そのエラーメッセージを検索したところ、受け入れられた回答がなかったこの質問にたどり着きましたが、コメントに「私にとっての問題は、展開ターゲット 6.0 に含まれるフレームワークがあることでした。展開ターゲット 5.0 で再コンパイルした後、すべてのプロジェクトとサブプロジェクトが展開ターゲット 5.0 でビルドされ、すべてが機能しました。

  4. OS X の展開ターゲットを確認したところ、10.8 に設定されていましたが、マシン B は 10.7 しか実行していません! そこで、ターゲットを 10.7 に変更すると、うまくいきました。

要約すると、問題は、展開ターゲットが現在のマシンの OS リビジョンよりも高い OS リビジョンに設定されていたことです。当たり前!

于 2013-06-16T21:30:49.507 に答える