管理在不同 Xcode 项目之间共享的源文件的简单方法是啥?
Posted
技术标签:
【中文标题】管理在不同 Xcode 项目之间共享的源文件的简单方法是啥?【英文标题】:What's an easy way to manage source files that are shared among different Xcode projects?管理在不同 Xcode 项目之间共享的源文件的简单方法是什么? 【发布时间】:2010-09-03 17:51:26 【问题描述】:我正在深入研究 ios 开发,并计划构建一些使用我自己的可重用代码的基本应用程序。当我更新包含我的可重用代码的文件时,我希望这些更新能够反映在所有使用它们的 Xcode 项目中。有什么方法可以做到这一点?
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:有几种方法可以做到。
如果您的“可重用代码”被分成库,您可以将其打包为单独的项目(编译为静态库),然后将它们链接到您的主项目(编译为可执行文件)。有点棘手,但这是“正确”的方式。 (不像 Visual Studio 的解决方案/项目范例那样灵活或简单,但这是另一天的抱怨。)
您也可以使用“创建文件夹引用”或“递归创建组”直接将包含源文件的目录拖放到项目窗口中。 (无论哪种方式,如果您只想要一份源文件的副本,您都不想使用顶部的“复制项目”复选框。)
这三个我都做了。
您可能希望从后者开始——将您的“可重用代码”分组到某个文件夹中(因此只有一个副本),然后使用“递归创建组”将该文件夹拖放到您的项目中。一个警告:如果您在多个项目中这样做,并且稍后您想将其从项目中删除,请不要使用将其发送到垃圾箱的选项,否则您的其他项目可能会搞砸。
【讨论】:
这种技术的一个问题是存储在不同目录树中的源代码不受我正在开发的应用程序的 Git 存储库管理。你如何解决这个问题? @radven 也许您可以描述您所设想的问题,以便您的问题更加清晰 当我检查我的应用程序的 1.3 版时,重要的是,其他文件夹中的所有可重用代码都与构建 1.3 版所使用的代码相匹配,即使它们已单独更新。管理这部分让我感到困惑。 @radven - 看看 git 子模块 - 每个项目都有一个 git 存储库,然后还有一个包含共享代码的额外存储库 - 如果将其添加到每个项目的存储库,它们都可以指向在共享代码的特定(和不同)版本上。【参考方案2】:这听起来像是你可以使用 Git 和分支的东西。
【讨论】:
【参考方案3】:创建一个静态库项目,然后使用 Xcode 的项目间依赖功能以正确的顺序构建它们并将应用程序与静态库链接
【讨论】:
【参考方案4】:我想到的一个解决方案是构建一个静态库项目,但仅使用它来测试编译该库中的可重用代码。然后将该库项目的可重用源代码子目录符号链接到使用该代码的所有其他项目中。这样,所有源代码都可以在任何项目中使用,并且我在可重用代码中所做的任何更改都将立即反映在其他任何地方(无需复制步骤)。当然,在该子目录上使用良好的源代码修订控制方法,这样我就可以对其进行版本控制、比较更改、还原等。
【讨论】:
【参考方案5】:正确的方法是创建一个库。在 iOS 中,您仅限于使用静态库,但动态库和框架是其他常见的可能性(例如,如果您的目标是 OS X)。
对此进行配置(使用 libStatic 作为静态库的名称,在本例中使用 App 作为应用程序):
1) 创建 libStatic 项目,并将其配置为编译您选择的文件
2) 将 libStatic.xcodeproj 添加到 App.xcodeproj。这会添加项目符号、索引和对 App 项目的引用。
(其余步骤都在 App.xcodeproj 中进行)
3) 双击依赖于 liStatic 的目标
4) 导航到“常规”选项卡
5) 单击依赖项列表下的“+”,并将 libStatic 目标添加到依赖项中。创建此关联/依赖关系非常重要,因此当您在 App 中开发时,libStatic 目标将保持最新(它将在 App 之前构建)。
6) 导航到组和文件树中的 libStatic 项目引用。如有必要,单击(展开)显示三角形以查看 libStatic 的产品。
7) 将适当的产品从 libStatic 项目引用拖到 App 目标的链接阶段。
8) 清理、构建、运行
【讨论】:
以上是关于管理在不同 Xcode 项目之间共享的源文件的简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章