我在Xcode项目上的机器A上工作,该项目链接到bitbucket git repo。所有最新和承诺的单元测试运行良好。
现在我想在机器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
构建项目没有错误(它还没有可执行的可执行文件)
是否有任何我需要调整的设置才能使克隆没有结束?
答案 0 :(得分:0)
好的,经过一番挖掘后我找到了解决方案:
我使用otool -L
列出了目标所引用的必需库(感谢this question以供参考)。
然后我手动添加了所有的库/框架,即使它们是CoreFoundation等,通常也不需要。但是,它还包括libobjc.A.dylib
。
现在我收到了一个不同的错误dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_atomic
,这是该库中的预期错误。
然后我搜索了该错误消息,它引导我this question,但没有接受答案,但在评论中说我的问题是我有一个框架包括部署目标6.0。在使用部署目标5.0重新编译它之后,导致所有项目和子项目都使用部署目标5.0构建,一切正常。
我检查了OS X部署目标,并将其设置为10.8,但机器B仅运行10.7!所以我将目标更改为10.7,然后就可以了。
因此,总结一下:问题是部署目标设置为操作系统修订版,该修订版高于当前计算机的版本。杜!