V8 javascript engine: 用vs2012编译
环境: windows8 vs2012 TortoiseSVN
目标:x64 的 v8 lib
1. 还是使用TortoiseSVN吧 (Git 我也就是乌龟水准,一看到google的Git和SVN命令混在一起,退缩了)
从不同的源,把代码sync下来, 在checkout中输入URL of repository 如下, 会自动映射到相应的目录
如果期间需要输入帐户密码的话,去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。 这个我没有试过。
粗略调试看了下代码,里面还有些宏辅助调试,可以输出更多的信息,以后看明白了再记录吧。
补充:web前端 , JavaScript ,