【专业技术】google浏览器的构建原理

编者按:

我们知道GYP是google的构建系统,为了熟悉他,我可没少走弯路, 我们知道cmake是这么工作的:

cmake CMakeLists.txt -o Makefile

现在我告诉你,ninja是这么工作的:

ninja gyp -o xxx.ninja

这里,ninja相当于cmake, 而gyp相当于CMakeLists.txt,当然,xxx.ninja就相当于Makefile,至于为何这么做,google这么解释了:为了performance。

下面转自bertzhang的一篇博文,详细介绍它。

因为阅读chromium的需要,也熟悉了一下chromium使用的GYP构建系统,其实这个系统和我原来所在的一个公司的构建系统非常相似,因此学习起来也比较容易。

首先看一下gyp的安装,如果你使用ubuntu系统那么安装可以通过下面的命令完成:

sudo apt-get install gyp

下面我们就通过一个例子来看看gyp的使用,假设我们编写三个文件hello_world.cc, my_class.h, my_class.cc这三个文件内容如下:

hello_world.cc

#include <stdio.h>

#include "my_class.h"

int main(int argc, char** argv) {

printf("hello world\n");

MyClass my_class(100);

my_class.Fun1();

}

my_class.h

class MyClass {

public:

MyClass(int value) : value_(value) {}

void Fun1();

private:

int value_;

};

my_class.cc

#include "my_class.h"

#include <stdio.h>

void MyClass::Fun1() {

printf("the value is %d\n", value_);

}

下面我们编写构建文件foo.gyp

foo.gyp

{

'targets': [

{

'target_name': 'foo',

'type': 'executable',

'sources': [

'hello_world.cc',

'my_class.h',

'my_class.cc',

],

},

],

}

然后运行命令:

gyp --depth=. foo.gyp

其中--depth=.虽然没什么用,但必须要加上,参考文献[1]说是chromium遗留问题

命令运行后会生成Makefile文件,这样就可以使用make进行编译了。

注意:最后}后面没有“,”, 开始这个地方写错了,总是出错,耽误了不少时间。

如果涉及到库、编译依赖、跨平台等问题可以详细参考文献[2],这里不一一说明,本文主要演示一个简单的使用过程,更多功能可以参考文献[2]来实现。

文献1比较了gyp和cmake等,也有一定的参考价值。

参考文献:

[1]http://blog.xiaogaozi.org/2011/10/29/introduction-to-gyp

[2]http://code.google.com/p/gyp/wiki/GypUserDocumentation

本文转自:http://blog.csdn.net/bertzhang/article/details/7387954

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

TensorFlow版本-如何更新?(踩坑版)

1.2K4
来自专栏FreeBuf

手工检测Web应用指纹的一些技巧

0x01 Web 应用技术概览 1.1 架构 大多数 web 应用可以粗略划分为三个组件(component)。 1、客户端, 大多数情况下是浏览器。 2、服务...

4196
来自专栏V站

PHP丨如何判断访客PC及PE端?(图片API配合使用)

手机双端比如自适应网站的站长来说还是比较有用的,使用它不但单纯的可以完美解决如何用PHP判断用户通过电脑端还是手机端访问网站,还可以实现一些实际的网站问题,比如...

1804
来自专栏信安之路

打造属于自己的渗透神器 第二篇

今天我又给大家带来了新的一篇打造一个属于自己的渗透神器,之前在浏览视频的时候看到一部视频就是讲这个的今天我们就一起试一下。

810
来自专栏张善友的专栏

在Macbook Air上用Boot Camp安装Windows 8

发布了Windows 8消费者预览版,将PC、移动端操作系统合二为一。作为Win8的公开测试版本,它重视平板操作体验、内置应用商店、云服务及社交分享无处不在等等...

2079
来自专栏零基础使用Django2.0.1打造在线教育网站

手把手教你破解Pycharm2018.2(JetBrains全家桶)

最近有小伙伴反映自己的Pycharm快过期了,问我有没有时间出一个破解的教程。正好今天有空,我就准备写一篇。注意本篇笔记只限于个人交流使用,不用做商业活动。如由...

721
来自专栏逸鹏说道

互联网+ 何人能挡?带着你的Code飞奔吧!

SQLServer性能优化专题 01.SQLServer性能优化之----强大的文件组----分盘存储(水平分库) http://www.cnblogs.com...

1907
来自专栏张善友的专栏

图文并茂介绍在VS2010里使用TFS2010

上面的两篇文章Team Foundation Server 2010 – Basic Installation和TFS2010 Team Project Col...

17510
来自专栏Java社区

一招 | 利用脚本不限速下载百度网盘文件

1685
来自专栏张戈的专栏

利用腾讯云COS云对象存储定时远程备份网站

导读:2 个月前,张戈博客分享了一篇Python+Shell 定时备份网站到阿里云 OSS 的教程,已经有非常多的站长朋友用上了,反馈还不错,也有不少朋友提出了...

4176

扫码关注云+社区