1. depot_tools 工具需要翻墙才能下载。下载好后要将 depot_tools 以及 depot_tools/python276_bin路径添加到环境变量PATH内。方便后面调用glient、fetch、python等命令。
2. V8源码下载可通过到github上git下来,或者直接调用fetchv8下载源码。
3. 注册环境变量,我这里使用vs2013编译,如果有需要可改成2015.
DEPOT_TOOLS_WIN_TOOLCHAIN= 0
GYP_MSVS_VERSION= 2013
4. 调用gclient sync命令下载依赖包时,需要.gclient文件。通过git下载v8时是没有这个文件的。通过fetch v8可自动生成这个文件。手动创建亦可。文件内容如下
solutions= [
{
"managed": False,
"name": "v8",
"url":"https://chromium.googlesource.com/v8/v8.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
将这个文件放在v8的同级目录
5. gclient sync命令由于需要访问谷歌服务器,需要翻墙。下载这些文件需要花费大量时间,要有耐心。如果土豪专线VPN可无视。
6. gclient sync 执行完后,默认在v8/gypfiles路径下生成all.sln。该项目文件默认生成静态库,如果需要动态库,请执行 python gyp_v8 -Dcomponent=shared_library。重新生成all.sln
7. 将depot_tools/python276_bin目录拷贝到v8/third_party,并改名为python_26。否则编译失败。
8. vs2013 打开all.sln 编译时会报一些错误,我们一个一个的解决。
a) 错误 16 error C2220: 警告被视为错误 - 没有生成“object”文件“。
要解决这个问题只需要将v8_base_0、v8_base_1、v8_base_2、v8_base_3这个几个项目的“将警告视为错误”属性设置为否即可。貌似是中文版vs2013导致的。
b) mksnapshot 编译失败,提示fatal error LNK1169: 找到一个或多个多重定义的符号。
注释掉 v8\src\interpreter\ bytecode-register-optimizer.cc文件第11行。
//const uint32_tBytecodeRegisterOptimizer::kInvalidEquivalenceId;
该静态成员常量已在头文件中初始化,注释掉该行即可。具体原因请大神告知。
9. 编译好后,可在v8/build/debug目录下找到v8.dll。v8.lib在v8/build/debug/lib。
到这里,小伙伴可以尽情的玩耍了。