XCODE 4.0.2 & 4.1分布式编译

转载请注明出处:http://blog.csdn.net/horkychen

(译注:我一直思考如何把旁边的电脑也用来一起编译一个大工程,今天发现了这份资料。先翻译一下,找时间实践。)

不知道是什么原因,XCode 4.x似乎不支持分布式编译了。虽然可以通过定义distcc服务器启用分布式编译,但基本上还是在本地工作。

仔细看看编译日志:

setenv DISTCC_HOSTS localhost

所以呼叫distcc后没有带来期望的网络处理事务。做上面的设定需要重写/Developer/usr/etc/distcc/hosts 和 ~/.distcc/hosts. 经过一顿Google后,找到了一个伎俩: 写个代理脚本(proxy script)呼叫distcc. 无论如何,它确实可以工作!开始先确保有一个XCode的安装包. (译注:即使不做这件事,也最好从Apple Developer Center下载包安装,而不是从App Store上直接安装。好处是,当你想要重装时,不要再下了。毕竟速度太慢!)

首先, 创建~/.distcc/hosts文件,distcc程序首先会检索这里. 然后输入如下的内容:

myfirstserver/n,cpp,lzo
mysecondserver/n,cpp,lzo
localhost/n,cpp,lzo

server可以是主机名称或IP地址,n表示你希望distcc运行的进程数,通常是电脑的CPU数或在此基础上加1。我倾向于选择小于本地最大进程数的数字,这会让编译过程更平稳。设置好后保存文件。

打开一个终端,并依次执行:

cd /Developer/usr/bin
mv distcc distcc.orig
nano distcc

使用vi或emac都可以,那并不重要。然后填入新的distcc:

#!/bin/sh
MY_DISTCC_HOSTS=`cat ~/.distcc/hosts`
export DISTCC_HOSTS="--randomize $MY_DISTCC_HOSTS"
/Developer/usr/bin/distcc.orig "$@"
exit $?

保存并退出 (ctrl-o, ctrl-x).

chmod a+x distcc

现在,理论上应该可以工作了,你可以在XCode中享受在网络中分布式编译了。不过,速度还会很慢。你可以观察到并没有完全发挥电脑的能力,每个电脑上只在跑一个进程。

在XCode有一个内建的参数设定并行编译进程数:PBXNumberOfParallelBuildSubtasks,它在XCode 4中被改掉了。如果你需要8个并行编译任务,你要这么做:

defaults write com.apple.dt.xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 8

…你可以把8改成你期望的数定. 通常这些数字之和应当是.distcc/hosts中/n值之和。

重启XCode! 

  *原文地址:http://phaser.gfxile.net/wp/2011/07/xcode-4-0-2-and-4-1-distributed-building/ 

   *关于distcc,看这里

时间: 2024-10-25 05:28:33

XCODE 4.0.2 & 4.1分布式编译的相关文章

《iOS9开发快速入门》——第2章,第2.2节解剖Xcode 7.0界面

2.2 解剖Xcode 7.0界面 iOS9开发快速入门 一个Xcode 7.0项目由很多的文件组成,如代码文件.资源文件.框架等.Xcode 7.0会帮助开发者管理这些文件.所以,Xcode的界面也相对比较复杂,如图2.2所示. 在图中可以看到,Xcode 7.0的界面大致可以分为4大部分.其中,编号为1的部分是导航窗口:编号为2的部分的编辑区域:编号为3的部分是工具窗口:编号为4的部分是程序调试信息窗口.本节将分别讲解这些区域的作用以及使用方式. 2.2.1 导航窗口 导航窗口的作用是显示整

XCode 5.0 新建的Targets,再向工程中添加obj无法呈现问题解决

XCode 5.0 新建的Targets,再向工程中添加obj无法呈现问题解决 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 其实题目有点问题,最初只是不知道啥原因导致的obj加载进来不显示,

XCode 8.0 下 NSLog 打印不完全

更多 精彩文章请访问:锐意翱翔原文链接 : XCode 8.0 下 NSLog 打印不完全 今天在重新整理希尔排序的时候,使用了 100000 个种子数据进行测试,但发现在排序好后,用 NSLog 无法打印完全排序结果,开始以为自己的排序算法写法有误,但查看内存数据信息,显示排序结果正常.这时怀疑 NSLog 在 XCode 8.0 下可能有 Bug. 于是使用 c 语言函数 printf 进行打印. Bingo ! 代码如下: NSMutableArray<NSNumber *> *resu

《iOS9开发快速入门》——第2章,第2.3节Xcode 7.0项目结构

2.3 Xcode 7.0项目结构iOS9开发快速入门一个Xcode 7.0项目包括了代码.界面.各类资源等.以下主要讲解Xcode 7.0的项目结构,以Hello项目为例,如图2.8所示. Hello文件夹:里边包含了应用程序的代码和编辑界面.Hello xcodeproj:是项目文件.1.png:是添加的图像文件.HelloTests与HelloUITests文件夹中包含了测试的代码以及配置文件.

Xcode 7.0 官方免费的真机开发

Xcode 7.0 官方免费的真机开发 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 苹果开发需要跟进的另一篇文档:What's New in Xcode 关于免费的真机开发描述如下: 这个确

Swift 语言 于 2014 年 9 月 18 日 的 XCode 6.0.1 的更新

Swift 语言 于 2014 年 9 月 18 日 的 XCode 6.0.1 的更新 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 这个本身就是中文的,不用过多解读,关于 Safari 7

《iOS9开发快速入门》——第1章,第1.2节构建开发环境—Xcode 7.0

1.2 构建开发环境-Xcode 7.0iOS9开发快速入门苹果公司在发布了最新的 iOS 9 系统后,又发布了最新的 Xcode 7.0.本节将主要讲解Xcode 7.0的安装.苹果账号的绑定和更新文件/组件等相关方面的内容. 1.2.1 安装Xcode 7.0Xcode 7.0可以从应用商店直接下载,并自动安装到计算机上.但是由于Xcode 7.0较大,直接从应用商店下载需要很长的时间.所以,很多时候大家都是从其他途径下载.这个时候,就需要手动进行安装.安装过程如下: (1)双击下载的Xco

图像处理-cmake编译的opencv3.0.0生成的工程无法通过编译

问题描述 cmake编译的opencv3.0.0生成的工程无法通过编译 我在windows下用cmake-gui编译opencv3.0(联合opencv contrib master), 生成的工程Opencv.sln在build的时候出现了许多下列类似的错误: 请问这是什么原因呢? 系统是windows10,vs2013 解决方案 http://www.opencv.org.cn/archiver/?tid-35547.html 解决方案二: http://www.nmtree.net/201

指令-VC6.0中dll创建失败,编译报错怎么处理

问题描述 VC6.0中dll创建失败,编译报错怎么处理 VC6.0环境,创建DCOM的服务器. 想要生成一个dll文件,在project setting里面输入了指令 然后就出现了编译错误 这个怎么破?求各位大神解答! 解决方案 -f是参数吧,中间缺少空格. 解决方案二: nmake命令路径是否正确,是否PATH环境变量中.跟参数之间要有空格.