Android Studio允许您更新appname,该名称从磁盘加载该文件夹,因此只加载该项目以运行和编程.在XCode中并非如此,所有目标都可用.
这已经好几年了,但现在有更好的方法,有数百个目标不涉及Git或Branching?关于这个的问题是陈旧的,只有少数项目,我们在这里谈论数百个.
解决方法
使用框架
如果可以,将合理的事物组合到单个(或多个)框架目标中.框架可以不仅仅是动态库周围的花哨包装器,它们可以包含辅助工具等.
使用工作区
如果对现有目标进行逻辑分组,则可以将它们分离到自己的Xcode项目中.将它们放入自己的项目后,您可以创建引用这些单个项目的工作空间.即使组合的工作空间在前面加载所有内容(我认为它不会这样做),您仍然可以打开并使用单独的项目,以便在处理组件时获得快速流畅的体验.
使用静态库
如果你有大量的目标,一个需要A,B和C,但另一个需要B,C,D,那么你实际上可以将A,B,C和D放在一个静态库中并依赖于链接器从每个目标中删除未使用的代码.这显然不会减少您拥有的目标数量,但您可以将静态库作为自己的项目并将其包含在公共工作空间中.这也将加快编译速度,因为文件只需要编译一次.
参数化目标或使用方案
如果您的目标只是包含一些带有硬编码参数的外部构建工具/脚本(我实际上已经看过这个),您实际上可以将ton of existing variables从xcode传递给这些外部工具并消除“重复”目标.同样,如果您的某些目标只是彼此的排列,您可以添加新方案.我已经看到的一个很好的例子是那些有“清理”(地址消毒剂等)构建单独目标的人,你可以改为创建一个清理方案而不是目标.
使用“脚本”构建阶段
如果您的某些目标正在执行诸如linting之类的操作,那么您可以使用脚本构建阶段来调用linter,而不是使用单独的目标来执行此操作.
将目标卸载到外部构建系统
Xcode可以使用脚本构建阶段(并使用上面提到的变量参数)简单地调用外部工具/脚本.如果您已经为另一个平台使用另一个构建系统(make,cmake等),那么这是有意义的.仅将Xcode用于Mac / iOS特定目标,并将其他所有内容卸载到跨平台构建系统.
如果构建系统以Xcode理解的格式输出错误,它甚至会显示与本机Xcode目标相同的文件和行错误.我见过人们围绕外部工具编写薄包装来捕获解析并将错误重新打印成这种格式.