GYP构建系统总结
GYP,Generate Your Project,一个Google开源的构建系统,最开始用于Chromium项目,现在一些其他的开源项目也开始使用GYP,如v8和node-gyp。不管怎样,这仅仅是一个工具,本文直接把gyp的使用方法的说明一气呵成。
特别之处
在已经有很多的构建系统的情况下,gyp诞生的哲学或者说优点如下:
- 各平台使用各自主流的构建系统。
- 程序员更熟悉自己的平台,减少学习成本。
- 构建速度快。自己平台的主流构建系统的速度是各平台优化过的。
- 在一个平台上可以生成所有支持的平台的工程文件。
- 如在mac上也可以生成Visual Studio工程,windows上也可以生成Xcode工程。
- 生成的工程文件和手工创建的工程文件没有区别
- 这样,随时可以停止使用gyp。别人可以只使用相关工程文件而不使用gyp
安装
由于本文对chromium的编译是基于Windows做调试的,所以这里仅说明gyp在Windows下的使用。
前提条件:本机需要安装python2.7,svn或git。
要安装gyp首先得去克隆google官方维护的gyp的git仓库。在window上安装好git以后,开始克隆:
这样就把gyp的远程git仓库克隆下来了,接下来就可以安装了。
在windows上打开一个cmd(不能再上面的的git bash中操作),切换到gyp的根目录,输入下面命令开始安装,然后等待其安装完成:
python setup.py install
为了能够在整个系统的目录下都能够使用gyp,所以把gyp的目录添加到系统的环境变量中。我的添加目录为:
PATH=C:\Users\zhaofaquan\gyp
至此gyp的安装和配置过程就结束了,这个工具就能使用了。
使用
- 编写.gyp文件
- 运行gyp命令生成makefile、build.ninja文件或xcode、vs等工程
- 编译。根据第2步的结果,运行make、ninja或者在xcode、vs里编译
举一个最简单的例子,源文件如下:
#include <iostream> int main(int argc, const char* argv[])
{
std::cout << "Hello World!" << std::endl;
return 0;
}
编写.gyp文件如下:
{
'targets': [
{
'target_name': 'main',
'type': 'executable',
'sources': [
'main.cpp',
],
},
],
}
在源文件目录下运行命令gyp --depth=. main.gyp
,生成工程文件。打开生成的工程文件编译、运行即可。
GYP构建系统总结的更多相关文章
- Skia构建系统与编译脚本分析
分析下Skia的构建系统,详细编译过程參看Windows下从源代码编译Skia.这里以ninja为例来分析.运行以下三条命令就能够完毕编译: SET "GYP_GENERATORS=ninj ...
- nixyx —— 一个小巧的项目工程/编译文件生成器(构建系统?)
恩..nixyx确实算不上是一个构建系统. 所谓构建系统,比如GNU的Autotools,那是一套很完整的构建体系,包括了程序的配置,编译和安装三大部分. 类似的软件还有:google的gyp.腾讯的 ...
- Google分布式构建软件之二:构建系统如何工作
分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所 ...
- C/C++构建系统 GNU autotool
我们在网上经常可以看到c/c++开源的项目,其中很多都是使用GNU的构建系统进行配置和编译的,如果按照规范构造这些的步骤,有一定的门槛和复杂度,下文把关于auotools系列的工具和概要的流程简要汇总 ...
- C/C++构建系统 -工具汇总
关于构建系统可以先参考百科 http://en.wikipedia.org/wiki/List_of_build_automation_software http://www.drdobbs.com/ ...
- [系统集成] Android 自动构建系统
一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包android 的打包一般 ...
- 团队项目·冰球模拟器——cmake 自动化构建系统的配置文件的编写
1 前言 考虑到命令行界面下编译程序并不如在 IDE 那么直观,再考虑到各位队友对 Linux 并不熟悉,如何大幅度地减轻整个项目的开发复杂度就是一个很重要的问题. 在 Linux 下有个很古老但很有 ...
- Mozilla 构建系统(转)
英文来源:Mozilla’s Build System 中文出处:开放博客,由灰狐翻译小组制作 Mozilla 构建系统是一个非常酷的分布式系统,运行在BuildBot上.系统能在每次修改后自动重新构 ...
- [Gradle] 在 Eclipse 下利用 gradle 构建系统
转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/ 构建系统时候常常要用到 Ant, Maven 等工具,对于初学者 ...
随机推荐
- [android]android开发中的运行错误之:adb.exe
调试的时候出现一下错误: The connection to adb is down, and a servera error has occured.You must restart adb and ...
- HibernateTemplate用法
private HibernateTemplate hibernateTemplate; 使用HbernateTemplate HibernateTemplate提供持久层访问模板化,使用Hibern ...
- 线程之一:JAVA线程基础
参考core java,马士兵视频 1.线程的基本概念 (1)一个线程是一个程序内部的顺序控制流. (2)线程和进程 –每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. –线程:轻量 ...
- MAC下用OPENSSL生成公钥和私钥
MAC OS自带了OpenSSL,所以不用去编译那一坨跟SHIT一样的源码.直接在命令行里使用OPENSSL就可以. 打开命令行工具,然后输入 openssl打开openssl,接着只要三句命令就可以 ...
- Python之路第十一天,高级(3)-线程池
线程池 简单的线程池的实现: import queue import threading import time class ThreadPool(object): def __init__(self ...
- DataTable Select 使用
DataView dv = new DataView(table); dv.RowFilter = " Type='10' and Visible='true'"; dv.Sort ...
- HibernateTemplate和HibernateDaoSupport
Spring整合Hibernate后,为Hibernate的DAO提供了两个工具类:HibernateTemplate和HibernateDaoSupport HibernateTemplateHib ...
- More is better(并差集)
More is better Time Limit : 5000/1000ms (Java/Other) Memory Limit : 327680/102400K (Java/Other) To ...
- char与byte的差别
非常多刚開始学习的人(包含我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比較,先将结果与大家 ...
- 工作记录8:iOS 传值问题总结(7种传值完美介绍)
1.属性传值 前向后传值. 记住: /* 1: 属性传值第一步需要用到什么类型就定义什么样的属性 2: 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页 ...