6

我知道您可以让 Xcode 引用其他项目中的框架/静态库构建目标,但是如果您要引用的项目没有框架/静态库目标,您可以直接引用另一个 Xcode 项目的源代码吗?我尝试使用子项目和 Xcode 4 工作区来执行此操作,但无济于事。调整标头搜索路径后,所有#import 语句都可以正常工作,但我仍然收到讨厌的编译器错误 repotting symbols not found。

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 查看将要编译的内容。请注意,除非文件直接添加到项目中,否则它们不会显示在要编译的资源下。然而,标头可以跨不同的项目进行通信。

编辑

我认为第二个问题的答案是,Xcode 3 始终需要显式管理依赖项,而 Xcode 4 工作区允许隐式管理目标依赖项,只要它们都在同一个工作区中。指定依赖项所需要做的就是在摘要页面中添加要引用为链接库的其他项目的产品。这些发现花费的时间太长了..(一个充满生产力的工作日),这方面的文档可以而且应该得到改进!

于 2012-01-03T21:42:41.420 回答