V8 javascript engine: 用vs2012编译

来源:互联网 发布:securecrt linux版 编辑:程序博客网 时间:2024/05/16 03:01

记录下VS2012编译google V8的过程。开始没有弄对,还费了点时间。


环境: windows8 vs2012 TortoiseSVN

目标:x64 的 v8 lib


1. 还是使用TortoiseSVN吧 (Git 我也就是乌龟水准,一看到google的Git和SVN命令混在一起,退缩了)

从不同的源,把代码sync下来, 在checkout中输入URL of repository 如下, 会自动映射到相应的目录

http://v8.googlecode.com/svn/trunk/     v8

http://gyp.googlecode.com/svn/trunk     gyp

http://src.chromium.org/svn/trunk/tools/third_party/python_26  python_26

http://src.chromium.org/svn/trunk/deps/third_party/cygwin       cygwin

如果期间需要输入帐户密码的话,去http://code.google.com/ 注册一个,密码在右上角, Profile-->Settings-->GoogleCode.com Password


2. 调整code目录结构,因为编译过程中有相对路径的依赖, v8文件夹的名字可以随意改,作为根目录, 但是其它的可别动。

v8
    build
        gyp
    third_party
        cygwin
        python_26

3. 写一个devenv.bat, 设置PATH, 启动cygwin shell, 必需是cygwin shell, 编译过程中的某些脚本依赖于其中的命令

set PATH=third_party\python_26;%PATH%
set ROOT=/cygdrive/p/GitDev/v8
chdir third_party\cygwin\bin
bash --login -i

ROOT变量是非必要的,为方便


4.启动devenv.bat  

cd $ROOT
python build/gyp_v8 -Dtarget_arch=x64

如果编译x86, target_arch设置为x86即可

会在build目录下产生all.sln. 因为我电脑上只安装了VS2012, 所以产生的sln是vs2012格式的 (这个可能依赖于环境变量的VC值, 猜测)。

关闭console


5. 打开all.sln, 把编译目标修改为x64. 

开始编译吧。小会就好了,代码量不那么庞大, 15个工程。


6. 在vs中设置启动项目为 sample/shell, 运行shell

print('hell, world!');

shell正常工作,结束。


默认生成的是 static lib,共4个

preparser_lib.lib
v8_base.lib
v8_nosnapshot.lib
v8_snapshot.lib

v8_base.lib 体积很大, debug有80M,release有300M。 大概是各种目标体系和优化的组合,静态链接嘛,链接后exe不会那么巨大。


如果想要动态库, 除了修改几个lib的工程属性外,还要加上预定义宏 BUILDING_V8_SHARED。 这个我没有试过。

粗略调试看了下代码,里面还有些宏辅助调试,可以输出更多的信息,以后看明白了再记录吧。 










原创粉丝点击