Xcode,包括构建中的外部参考文件夹

Posted

技术标签:

【中文标题】Xcode,包括构建中的外部参考文件夹【英文标题】:Xcode, including a external reference folder in a build 【发布时间】:2013-07-09 06:04:01 【问题描述】:

我的硬盘驱动器上有一个文件夹,它基本上是我创建的方便类的库(文件是 .h 和 .cpp)。我想将它们保留在外部,以便我可以从多个正在进行的项目中一致地引用它们。

我使用添加现有文件并选择文件夹,将其作为参考(蓝色文件夹)添加到我在 xcode 中的类文件夹中。当我尝试从项目文件中访问这些文件时,我得到了一系列错误,因为显然我不知道我在做什么。我需要采取哪些步骤来确保我的所有外部文件都包含在构建中?

谢谢!

【问题讨论】:

【参考方案1】:

我的硬盘上有一个文件夹,它基本上是我创建的方便类库(文件是 .h 和 .cpp)。

Xcode 不会自动枚举目录内容并生成静态库,因为文件夹引用可能暗示。管理它的简单方法是创建一个库,供您的其他项目引用:

创建一个新的 Xcode 项目 添加静态库目标(注意:这可能是另一种库类型) 将源文件添加到新项目中

将 .cpp 文件添加到静态库中

将新项目添加到现有应用中

将库添加到应用的链接阶段

让您的静态库与要编译的文件保持同步

这只是一个摘要; This looks like a more detailed introduction.

【讨论】:

感谢您的回复!这几乎奏效了。我按照教程并正确链接了所有内容。问题是我的库中的一些文件也依赖于我的项目中的文件并且被抛出为未找到,例如 cocos2d.h 和 box2D.h。交叉我的手指,这两个项目都会握手并玩得很好,但似乎并非如此。在我的情况下,这是否意味着我将无法使用此方法? @user2033824 cocos2d 和 box2d 都是第三方库。假设您正在做显而易见的事情 - 只需将它们配置为依赖静态库即可。所以说你有这 2 个库,你的库和你的应用程序——你有一个依赖结构,你的应用程序依赖于所有 3 个库,而你的库依赖于这 2 个库。所以你有一个非常清晰的依赖结构。您的库需要能够找到其依赖项的标头(例如 box2d),但您的库不应链接到 box2d 库 - 只需告诉您的应用程序目标即可。 @user2033824 IOW,你可以使用这个方法。如果 box2d 提供静态库,您的应用程序不应编译 box2d 源代码。它应该只是将库设置为依赖项并链接到它。参考这些——不要复制/复制工作。有一些更高级的技术可以合并更复杂的依赖项,但这对你来说应该很好用。在变得太花哨之前确保你掌握了基础知识。 试试吧。我没有恶意复制它们,它们会自动包含在 cocos2d 模板中。 k,我已经设置好了,带有 project->mylibrary->b2dcc2dlib 依赖项。设置完全像那个教程。但是 mylibrary 和 b2dcc2dlib 都随机找不到自己的 header,mylibrary 仍然找不到 box2d 和 cocos2d 的 header。我收到警告“b2dcc2dLib 被拒绝作为 'libb2dcc2dLib.a' 的隐式依赖项,因为它的架构 'armv7' 不包含所有必需的架构 'armv7 armv7s'”但是查看项目中的所有目标,他们默认为'armv7 armv7s'。我可能做错了什么?

以上是关于Xcode,包括构建中的外部参考文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Xcode中构建规则中的“复制到目标”是啥?

XCode 5 中的配置文件

如何在 10.7 上的 xcode 中构建到受保护的文件夹

dom构建渲染过程

ZXing phonegap 插件的 XCode 构建错误:Undefind symbols for architecture i386

Xcode 13缺少产品文件夹,Finder菜单中的“显示构建文件夹”在哪里