0

我有一个由 2 个库(libraryA 和 libraryB)和一个包组成的项目。每一个都像一个项目一样创建,并通过拖动它们导入到主项目中。

仅仅拖动它们不足以让 Xcode 找到所有头文件来编译整个项目,所以我不得不使用硬路径来破解路径,但这很糟糕,因为路径可以改变,我将无法再次编译这个项目。我想使用这些宏来访问文件,但是在测试了几乎所有这些之后,我无法让它工作。

我必须使编译工作的解决方案如下。

我已经调整了每个库,将它们的公共标头保存在里面

/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/

使用目标名称,因此在编译后它们会将其公共标头放在

/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/libraryA

/Users/rubberduck/Library/Developer/Xcode/DerivedData/MyProject-dnaimaovsccuvieahmvgttwjnabc/Build/Products/Debug-iphoneos/libraryB

现在的问题是 libraryB 需要 libraryA 的头文件来编译。如果这些是兄弟目录,我应该在 libraryB 的标题搜索路径中放置什么以指向 libraryA。

注意:我需要一个不是硬编码的路径,而是使用我提到的那些宏之一。

4

3 回答 3

1

Apple 似乎已经脱离了公共标头路径,因为静态库的首选机制包括,可能是由于这些类型的复杂性。如果您创建一个新的静态库项目,它将改为具有“复制文件”构建阶段,其中头文件"Products Directory"与 subpath一起复制"include/${PRODUCT_NAME}"

当您导入标头时,#import "header1.h"您将使用#import <MyProduct/header1.h>. 我相信在编译之前需要构建这些库,但如果它们包含在您的“将二进制文件与库链接”阶段中,这应该不是问题。

于 2013-04-19T04:31:24.237 回答
0

你可以试试,

添加 Xcode 可以用来动态查找 Lib 的“Source Tree”变量。 在 Xcode 首选项 > “位置”按钮 > “源树”选项卡 > 创建一个新的源树变量。 对于 Lib,创建LIB_SRC并让它指向/path_to_lib/lib/src/ 注意:Xcode 不允许路径包含任何空格!

于 2013-04-19T04:17:30.740 回答
0

这显然是一个 Xcode 错误或限制。

我对此的唯一解决方案是在同一个工作区中多次导入项目使用的子项目。

例如:假设我有一个由主项目和 libraryB 使用的 libraryA。我为使 Xcode 编译所做的只是在同一个工作区中导入 libraryA 两次,一次用于 libraryB,一次用于主项目,并且一切编译正常。

Xcode 4 被 Apple 设计得很糟糕,从界面到引擎,现在我明白为什么这么多人讨厌它了(62% 的网站民意调查)。

于 2013-04-21T18:00:49.330 回答