gpt4 book ai didi

ios - 数百个目标,xcode 配置中的相同代码库

转载 作者:可可西里 更新时间:2023-11-01 04:40:45 25 4
gpt4 key购买 nike

我们在 xcode 中有 400 多个目标。它仍然可以正常工作,但必须有更好的方法来设置它,方法是保持相同的代码库,但不要拥有所有可能减慢 xcode 速度的目标。

Android Studio 允许您更新应用名称,它会从磁盘加载该文件夹,以便仅加载该项目以运行和编程。在 XCode 中情况并非如此,所有目标都可用。

已经好几年了,但现在有没有更好的方法,有数百个目标不涉及 Git 或分支?关于这个的问题很老,而且只针对少数几个项目,我们在这里讨论了数百个。

最佳答案

您的问题缺乏足够的上下文来提出具体建议,但总的来说......

使用框架

如果可以,将合理的事物组合到一个(或多个)框架目标中。框架不仅仅是围绕动态库的精美包装器,它们还可以包含辅助工具等。

使用工作区

如果对现有目标进行逻辑分组,您可以将它们分离到各自的 Xcode 项目中。一旦将它们放入自己的项目中,您就可以创建一个引用这些单独项目的工作区。即使组合工作区预先加载所有内容(我不认为它会这样做),您仍然可以打开并使用单独的项目,以便在处理组件时获得快速流畅的体验。

使用静态库

如果您有大量目标,其中一个需要 ABC,而另一个需要 B, C, D 那么你实际上可以把 A, B, C code> 和 D 一起放在一个静态库中,并依靠链接器从每个单独的目标中删除未使用的代码。这显然不会减少您拥有的目标数量,但您可以将静态库作为自己的项目并将其包含在公共(public)工作区中。这也将加快编译速度,因为文件只需要编译一次。

参数化目标或使用方案

如果你的目标只是用硬编码参数包装一些外部构建工具/脚本(我实际上已经看到了这个)你实际上可以传递一个 ton of existing variables从 xcode 到这些外部工具并消除“重复”目标。同样,如果您的某些目标只是彼此的排列,您可以添加新方案。我见过的一个很好的例子是人们有一个单独的目标用于“清理”(地址清理器等)构建,您可以创建一个清理方案而不是目标。

使用“脚本”构建阶段

如果您的某些目标正在执行诸如 linting 之类的操作,那么您可以改为使用脚本构建阶段来调用 linter,而不是让单独的目标来执行此操作。

将目标卸载到外部构建系统

Xcode 可以使用脚本构建阶段(并使用如上所述的可变参数)简单地调用外部工具/脚本的目标。如果您已经在另一个平台上使用另一个构建系统(make、cmake 等),那么这样做是有意义的。仅针对 Mac/iOS 特定目标使用 Xcode,并将其他所有内容卸载到跨平台构建系统。

如果构建系统以 Xcode 理解的格式输出错误,它甚至会像本地 Xcode 目标一样显示文件和行错误。我见过人们围绕外部工具编写薄包装器来捕获解析错误并将其重新打印成这种格式。

关于ios - 数百个目标,xcode 配置中的相同代码库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51805303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com