Ios 有没有办法让Xcode 7.3及以上版本支持多Mac设备之间的分布式构建?

Ios 有没有办法让Xcode 7.3及以上版本支持多Mac设备之间的分布式构建?,ios,xcode,distcc,Ios,Xcode,Distcc,我在一个iOS开发团队中,大约有10个伙伴。我们所有人都在1Gbps局域网中使用Mac设备,因此我想知道我们是否可以分布式构建项目: 当有人开始构建项目时,它可以自动连接到其他Mac设备并分发编译单元。就像distcc一样 并行构建作业计数可能超出主机的cpu核心。例如,即使主机只有N个cpu核,它也可以在不同的客户机上同时编译超过N个,可能是N*2个文件 关于这一点,我在谷歌上搜索了很多,但所有的文章似乎都过时了。最新Xcode 7.3的任何解决方案?Xcode在4.5版之前都有“分布式构建”

我在一个iOS开发团队中,大约有10个伙伴。我们所有人都在1Gbps局域网中使用Mac设备,因此我想知道我们是否可以分布式构建项目:

  • 当有人开始构建项目时,它可以自动连接到其他Mac设备并分发编译单元。就像distcc一样
  • 并行构建作业计数可能超出主机的cpu核心。例如,即使主机只有N个cpu核,它也可以在不同的客户机上同时编译超过N个,可能是N*2个文件 关于这一点,我在谷歌上搜索了很多,但所有的文章似乎都过时了。最新Xcode 7.3的任何解决方案?

    Xcode在4.5版之前都有“分布式构建”功能,随后被删除。如今,苹果做这类事情的标准方式通常是通过“持续集成”(bots),后者通常在Xcode服务器环境中运行。这很可能不是您想要的,因为它与在网络上让客户端计算机共享构建任务的想法有很大的不同

    好消息是有一个活跃的github项目名为,它使用了以前的Apple组件
    distcc
    ,它似乎与当前版本的Xcode(7.3.1/Apple LLVM 7.3.0 clang-703.0.31)配合使用


      • 我的答案是:您不再需要此设施,它被删除是有原因的

        分布式构建在某些构建工具链中是有益的,甚至是必要的,在某些项目中,当纯粹的代码大小加上缓慢的编译器、链接器和其他工具链参与者的组合,以及当工具链识别依赖性的能力,跟踪更改禁止部分和差异构建。换句话说。。。Visual Studio for Windows上任何合理的大型项目。。。(笑话——还有更糟的)

        然而,当您使用最新的(目前是v10.3)Xcode及其工具链,使用llvm+CLANG工具链开发iOS程序时——在普通Mac上的正常构建时间不会超过2-3分钟,除非您在项目文件中做了一些非常愚蠢的事情

        在我的上一个(非常复杂!!!)项目中,每个项目都有几十个内部库和依赖项,我成功地使clean+构建时间远低于一分钟,而大多数常规的迭代构建时间远低于10秒

        在这种情况下,对于非常复杂的分布式构建系统来说,没有真正的好处

        当然,远程构建有一个很好的理由和用途——例如完全在一台计算机上进行,但不是在您的计算机上。这对于“正式的”“构建机器”场景以及在宿主“构建服务器”上进行的长时间测试运行非常有用。当然,今天的Xcode支持这一点

        但我真正想说的是——如果构建时间让你烦躁不安的话——继续,回顾一下你的项目结构

        您是否使用了神秘的依赖项插入机制,如自制咖啡、可可豆等? 也许你在iOS生态上使用的是“元”开发系统?(Unity?Mono?Cordova?)您是否通过shell脚本构建步骤使用外部工具链?你是否有很多破碎的依赖关系,迫使你每次都从头开始构建一切


        所有这些都有解决办法,并且可以小心地完成,这不仅有利于您的构建时间,而且有利于构建产品的健壮性和规模,易于扩展和维护,以及代码库将来的可移植性。

        据我所知,这样的事情并不存在。哦,好吧。我检查了github项目,但我不知道如何让它工作。我启动了监视器,在xcode中点击了cmd+B,虽然插件已经加载,但似乎没有什么不同。xcode像往常一样构建,监视器什么也不显示。你有关于这方面的教程吗?当你构建这个项目时,它还会创建一系列其他工具,包括一个名为
        Distcc 3.2.xcplugin
        。。。您可能希望将其添加到每个客户机Xcode中。除此之外,看看distcc项目主页:我确实安装了插件,但在xcode中,无论是xcode gui还是构建日志,我似乎都没有任何明显的区别。这个插件是否以静默方式替换构建过程,或者我还应该做些什么?为了从Xcode中获得并行编译,您需要选择
        distcc编译器
        ——这才是它真正的基础。更多信息:(…该线程中提到的问题已修复…)这很有意义。我试试看。非常感谢。