随笔分类 - Google构建系统
摘要:Google 多源码管理工具 gclient本文根据gclient帮助整理。google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将git和svn代码放在一起。gclient的sync,update等命令很容易学习和使用,不再多说,重点说明下和gclient密切相关的两类文件.gclient和DEPS。.gclient文件是gclient的控制文件,该文件放在工作目录的最上层。".gclient"文件是一个Pytho
阅读全文
摘要:1BuildSystemwords from huangjun@baidu.com(leemars528)内部构建系统*必须*要求所有模块都使用这个构建系统。模块的依赖*不应该*通过额外的系统来管理。*应该*能够指定足够细致的粒度。就*应该*只依赖于需要生成接口所需要的最少内容。1.1GYPgyp(generate your project)是chromium的构建系统,地址在http://code.google.com/p/gyp/。关于GYP和CMake的对比在http://code.google.com/p/gyp/wiki/GypVsCMake。文档建设还是比较差的,并且个人使用一个很
阅读全文
摘要:什么是Ninja在Unix/Linux下通常使用Makefile来控制代码的编译,但是Makefile对于比较大的项目有时候会比较慢,看看上面那副漫画,代码在编译都变成了程序员放松的借口了。所以这个Google的程序员在开发Chrome的时候因为忍受不了Makefile的速度,自己重新开发出来一套新的控制编译的工具叫作Ninja,Ninja相对于Makefile这套工具更注重于编译速度。除了Chrome现在还有一些其他的比较大的项目也在开始使用Ninja,比如LLVM。我试用了一下感觉还是不错,比如编译Cmake时间大概是原来的1/4。Ninja试用C++实现,其支持的语法非常简单,作者在这里
阅读全文
摘要:Ninja是最近冒出来的一个 build system,它很像 make,然而效率更高,对大项目支持更好。当然我用 Ninja 和效率无关(我又没有那种有几百个中间目标的 C++ 项目要 build),纯粹是因为 mingw-builds 里的make.exe对 PATH 的识别有问题而已。Ninja 使用build.ninja文件来定义构建规则。和 Makefile 里的元编程不同,build.ninja几乎是完全静态的,动态生成依赖其他工具,如 gyp 或者 CMake。下面是我用来构建 typeof.net 的文件:forceFlags = rule generate_site ...
阅读全文
摘要:在使用Make工具编译LLVM是非常耗时的。往往需要三四个小时。但是使用goolge开源的ninja编译LLVM只需要10到20分钟。本文以llvm3.3为例,演示在linux上编译和安装过程。第一步 安装ninja和cmake1 获取并编译安装 ninja$ git clone git://github.com/martine/ninja.git$ cd ninja$ ./bootstrap.py$ sudo cp ninja /usr/local/bin/Q: warning: A compatible version of re2c (>= 0.11.3) was not foun
阅读全文