Xcode 4中的跨项目源代码引用

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工作区是怎么回事?它与子项目有何不同?我能找到的唯一区别就是它们在可视化方面不同...
工作区
子项目
1个回答

6
第一个问题的答案显然是“不行,Xcode不能引用另一个项目中的源文件”。为了编译源文件(.m文件),Xcode项目必须直接引用它们。你可以在目标设置->编译资源中查看将要被编译的内容。请注意,除非文件直接添加到项目中,否则它们将不会显示在要编译的资源下。但是,头文件可以在不同的项目之间共享。
编辑:
我认为第二个问题的答案是:虽然Xcode 3需要始终明确地管理依赖关系,但Xcode 4工作区允许隐式管理目标依赖关系,只要它们都在同一个工作区中。只需在摘要页面中将要引用的其他项目的产品添加为链接库即可指定依赖关系。这些发现花费了太长时间...(整整一天的工作时间),这方面的文档肯定需要改进!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接