项目用到将v8嵌入到C++的情况,公司没时间研究,只有在家研究,编译过程一堆坑。记录一下。

网上百度的都是基于vs2010,或者早版本的v8编译,最新版本应该使用vs2013\vs2015。本文介绍的是2016-04-12下载最新版本v8源代码情况下的v8编译。

0x01 准备工作

    下载安装:git\svn\python27

0x02 V8源代码

v8源代码托管于 https://chromium.googlesource.com/v8/v8.git,要FQ。

github上有镜像同步的源,可以从这里下载:https://github.com/v8/v8

0x03 gyp

  在以前版本的v8中,在tools/visual_studio下似乎有编译工程,最新版本的已经移除。需下载gyp生成对应的编译设置。

这个网上有下载,不知道怎么从v8 wiki中给的 http://code.google.com/p/gyp/ 地址进行下载,于是从github找到了镜像:

https://github.com/bnoordhuis/gyp/tree/master/pylib/gyp

下载后放到build/gyp目录下即可

0x04 cygwin和icu

在third_party目录下新建cygwin/icu两个目录,分别使用svn从下面两个地址下载对应代码:

     svn co https://src.chromium.org/chrome/trunk/deps/third_party/cygwin
           svn co https://src.chromium.org/chrome/trunk/deps/third_party/icu52

cygwin建议从其他地方下载,当时下来至少半小时啊。。

0x05 clang

在tools/clang/scripts目录下,通过svn下载:

svn co https://src.chromium.org/chrome/trunk/src/tools/clang/scripts
0x06 depot_tools

关于这个库,好像网上都没有怎么提,需要下载到和build同级的depot_tools目录下:

   可以从google的托管网站上下:git clone https://chromium.googlesource.com/chromium/tools/depot_tools

但那个慢啊,我从github上找了个最近的clone,下了个zip包解压:https://github.com/mlufei/depot_tools

0x07 编译

启动命令行工具,由于我装的是VS2013,设置环境变量:

set DEPOT_TOOLS_WIN_TOOLCHAIN=0  ; 不设置这个会自动去下载sdksetup.exe

set GYP_MSVS_VERSION=2013

好了,现在最坑爹的问题来了,编译提示:

src/tracing/trace-event.h(10): fatal error C1083: Cannot open include file: 'base/trace_event/common/trace_event_common.h': No such file or director

trace_event_common.h这个文件,无论是从镜像还是google自身的托管仓库都找不到。好吧,想办法去找吧。

将文件放到\base\trace_event\common\trace_event_common.h后,重新编译,

然后又会遇到下面的编译警告,由于工程将警告视为错误,编译不过:

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

这是由于相关文件中含有unicode字符,删除即可。

当目前为止,除测试用例相关的工程都应该可以编译通过了。我这里编译后\build\Debug\lib目录下是这个样子的:

[原创]Windows下Google V8 javascript引擎编译的更多相关文章

  1. V8:V8(Javascript引擎)

    ylbtech-V8:V8(Javascript引擎) Lars Bak是这个项目的组长,目前该JavaScript引擎已用于其它项目的开发.第一个版本随着第一个版本的Chrome于2008年9月2日 ...

  2. V8 javascript 引擎

    V8是一个由丹麦Google开发的开源java script引擎,用于Google Chrome中.[2]Lars Bak是这个项目的组长.[3]   V8在执行之前将java script编译成了机 ...

  3. 在Android上使用Google V8 JS 引擎

    在cantk-runtime中直接使用的webview,通过JAVA扩展接口把Canvas的2d Context的API定向到JNI,通过OpenGL来图形加速,渲染速度大大提高.后来测试发现在大部分 ...

  4. Windows下使用Visual Studio 2010编译ffmpeg全过程

    在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...

  5. 用NAN简化Google V8 JS引擎的扩展

    通过C++扩展Google V8 JS引擎的文章很多,Google V8 JS带的例子也容易明白.但是大部分文章都是Hello World型的,真正使用时发现处处是坑.扩展V8最经典的例子就是node ...

  6. 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp

    配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...

  7. V8 Javascript 引擎设计理念

    Netscape Navigator 在 90 在年代中期对 JavaScript 进行了集成,这让网页开发人员对 HTML 页面中诸如 form .frame 和 image 之类的元素的访问变得非 ...

  8. Windows下使用Visual Studio 2010 编译ffmpeg全过程

    (注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...

  9. 【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程

    原文  http://www.cnblogs.com/xylc/p/3683203.html 主题 FFmpegWindowsVisual Studio ffmpeg是一个开源的多媒体库,使用非常广泛 ...

随机推荐

  1. Python3.5入门学习记录-模块

    模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了 ...

  2. TCP的流量控制(转载)

    1.TCP的滑动窗口 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认. TCP的两端都 ...

  3. Hibernate常见接口说明

    (一)SessionFactory 1. getCurrentSession()和openSession()区别 getCurrentSession创建的session会和绑定到当前线程,而openS ...

  4. Memcached内存管理模型分析

    Memcached 是一个高性能的分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而减轻RDBMS的负担,提高服务的速度.提升可扩展性.本文将基于memcached1.4 ...

  5. python调win32api调整屏幕分辨率

    需要频繁切换屏幕分辨率,想写个脚本来实现,需要切换时运行一下就好 在网上查到,需要用windows的api,ChangeDisplaySettings 实现代码如下 import win32api d ...

  6. (原)vs2013编译成静态库

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5477664.html 1. 在“属性”-“配置属性”-“常规”-“配置类型”里面设置“静态库(.lib ...

  7. deepin软件中心打不开

    想体验下deepin新特性,就修改了软件源为test版本,结果就坑了,软件中心打不开了...无奈之下,看了下论坛,找到了官方源地址,然后替换. sudo gedit /etc/apt/sources. ...

  8. mysqldump 的方式来搭建master-->slave 的复制架构

    1.master 上要满足的最小条件: 1.server_id 已经设置成了一个非0值 2.log_bin 配置好binlog 2.slave 上要满足的最小条件 1.server_id 已经设置成了 ...

  9. Java 学习 第四篇;面向对象(1)

    1:关于继承为了保证父类的良好封装性,不会被子类随意改变,设计父类时通常隐藏父类的内部数据,把父类属性改为private如果父类中可以被重写,但不希望被其他类自由访问可用protected修饰;2:什 ...

  10. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...