Ton*_*ony 6 workspace xcode linker compilation subproject
我知道你可以让Xcode在其他项目中引用框架/静态lib构建目标,但如果你想引用的项目没有框架/静态lib目标,你可以直接引用另一个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)
Run Code Online (Sandbox Code Playgroud)
此外,这个新的Xcode 4工作区的处理是什么?它与子项目有何不同?我唯一能找到的是它们看起来与众不同......
工作区

子projct

第一个问题的答案显然是"没有Xcode不能引用另一个项目中的源文件".为了编译源文件(.m文件).Xcode项目必须直接引用它们.您可以转到目标设置 - >构建阶段 - >编译资源以查看将要编译的内容.请注意,除非文件直接添加到项目中,否则它们不会显示在要编译的资源下.然而,标题可以跨不同项目进行通信.
编辑
我认为第二个问题的答案是,虽然Xcode 3需要始终对依赖项进行显式管理,但Xcode 4工作区允许隐式管理目标依赖项,只要它们都在同一个工作区中.指定依赖关系所需的全部内容是在摘要页面中添加要引用的其他项目的产品作为链接库.这些调查结果花了太长时间......(一个完整的生产工作日),关于这方面的文档可以并且应该得到改进!