Cocoa框架开发:项目间共享

4
我当前正在开发几个类似的Cocoa桌面应用程序。为了在它们之间共享代码,我已经确定了一组核心类和函数,可以在所有这些应用程序中通用。我想将这个共同的代码捆绑成一个框架,我的所有当前应用程序(以及任何未来的应用程序)都可以链接到。
现在,这是困难的部分:我将会根据需要开发这个框架,因此我需要每个桌面应用程序都有对它的引用,但我希望能够在每个应用程序项目内部编辑框架源代码,并根据需要自动重新构建该框架。
例如,假设我打开了DesktopAppNumberOne的Xcode项目,并决定更改其中一个框架类。我希望能够:
1. 在不必打开Xcode中的框架项目的情况下,打开并编辑该框架类的源文件。 2. 点击DesktopAppNumberOne上的“build”按钮,看到框架首先被重建(因为它的某些源代码已更改),然后再看到DesktopAppNumberOne的某些部分被重建(因为它链接的某个框架已更改)。
我可以看出如何在只有一个应用程序和一个框架的情况下完成这项工作,但我在尝试多个共享单个框架的应用程序时遇到了困难。
有人成功地使用这种方法吗?我也许是走错了路吗?任何帮助都将不胜感激。

你说你可以在一个项目中看到如何做到这一点...但你没有说明如何做。无论是两个、三个还是更多的项目,都没有什么不同。请解释一下你会如何做到这一点。 - hooleyhoop
对于一个项目,我会包含所有的框架源文件,为框架添加一个目标,并使应用程序目标依赖于框架目标。这很简单。但如果有多个项目,就需要大量重复操作。例如,如果我在框架中添加文件,那么我还必须在其他每个项目中都添加这些文件。同样,如果要更改构建设置、重命名文件等,也是如此。 - e.James
从概念上讲,我希望能够将框架作为完整的Xcode 项目包含在每个应用程序项目中,如果这有任何意义的话。通过这种方式,每个应用程序项目都将依赖于框架项目,但框架项目本身将是一个自包含实体,只需要在一个地方进行编辑即可。 - e.James
1个回答

4

为您的框架创建XCode项目。

在“Groups & Files”面板中,看到最左上角的蓝色项目图标了吗?将其拖放到任何其他项目的“Groups & Files”面板中。

因此,创建一个应用程序项目,并从您的框架项目中拖入项目图标。

CMD-i在您的应用程序目标上。在这里,您可以设置对框架的依赖关系并链接到它。

一些要点

将多个应用程序链接到一个框架可能会很棘手。您需要将框架安装到/Library/Frameworks或等效位置,或者打包到每个应用程序中。

出于开发目的,我发现为每个项目设置自定义的公共构建目录可以简化事情。我将每个项目设置为构建到/Code/Build/Debug中。这意味着调试构建的框架搜索路径可以是$CONFIGURATION_BUILD_DIR。对于您的发布构建,您仍然需要完成一些工作,例如安装路径、rpaths等。真的很麻烦!

XConfig文件是您的朋友。开源的Google Mac Toolbox工具箱是如何使用它们的一个很好的例子。您可能需要至少一个Project_debug.xconfigProject_release.xconfigTarget_framework.xconfigTarget_application.xconfig


看起来很有前途。谢谢!我会试一试的。 - e.James
很棒。这样做可以很好地解决问题!我不知道你可以简单地将一个项目作为依赖项添加进来。 - e.James
如果你还不知道的话 - 对于具有多个目标等复杂项目,我总是启用“目标成员资格”列(在“组和文件”上按Cntrl键单击)。没有它,我无法生存。 - hooleyhoop

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