据我所知,当我将我的任何项目从模拟器切换到设备构建配置时,构建不再是分布式的,而是在本地构建的。
那么,让 Xcode 使用分布式构建机制进行设备构建有什么神奇之处吗?有人对此有明确的说法,甚至有一些实践经验吗?
除非您了解分布式构建和 Xcode 的主题,否则请不要投票或关闭。这不是关于签名分发的菜鸟问题。
最佳答案
我们还发现 Xcode 3.2.5 不分发设备版本,而模拟器版本使用 distcc 正确分发,尽管在 Xcode Preferences -> Distributed Builds 下设置了所有必要的选项/strong>.
但是,可以解决 Xcode 的限制并强制它也分发设备构建。 Apple 没有默认启用设备分布式构建,这看起来像是一个疏忽(错误!)。
您需要采取的步骤如下:
增加 Xcode 用户默认值 PBXNumberOfParallelBuildSubtasks。这限制了并行构建任务的最大数量,默认为 CPU 内核的数量(有关详细信息,请参阅 Apple 自己的 Xcode 用户默认引用 文档)。我将它从 2 增加到 16,如下所示:
编写 com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16
或 Xcode 4.2默认写入 com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16
请务必重新启动 Xcode 以使上述更改生效。
您需要设置自己的 DISTCC_HOSTS 环境变量值,详见
distcc
手册页。为此,您需要在您自己的
/Developer/usr/bin/distcc
脚本中设置 DISTCC_HOSTS(然后调用原始/Developer/usr/bin/distcc
二进制文件,您可以将其重命名为其他名称)。请注意,Xcode 为每个编译单元调用/Developer/usr/bin/distcc
并在每次调用之前设置 DISTCC_HOSTS,因此您需要使用此伪装脚本来覆盖 Xcode。我自己的
distcc
脚本简单如下(我把原来的distcc
二进制重命名为distcc.orig
):#!/bin/sh export DISTCC_HOSTS="--randomize your list of hosts, each followed by ',cpp,lzo'" /Developer/usr/bin/distcc.orig "$@" exit $?
在 DISTCC_HOSTS 中有很多选项可以调整,特别是关于使用您自己的本地主机也进行一些编译而不是将所有内容外包出去,但以上至少应该让您开始。最适合您的方法显然取决于您自己的 Mac 硬件和网络性能。
根据我自己的经验,在相对较慢的网络上使用由几台四核 Mac 和我自己的双核 Mac 组成的分布式构建服务器设置将整个设备重新构建时间从大约 15 分钟缩短到大约 5 个。
关于iphone - 是否可以使用 distcc 构建 iPhone 设备版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151434/