搭建V8代码的阅读兼开发环境 ( windows + VS-IDE )

新版本的V8再也不包含IDE的工程文件了,scons工具也要转向gyp工具, (scons仍是能够用的,注意scons和gyp都是基于python2的, python3修改了语法. scons和gyp没法使用,不过你没必要卸载原先的python3,多装一个python2便可.) gyp我由于python3的缘由折腾了小久python语法,改用scons + python2 成功以后, 也没去尝试 gyp + python2,并且我还未完全明确如何安装gyp,好歹scons还提供个安装文件, 自动复制到python目录下.   =.=|| 既然scons还能很方便的使用,就先不自找麻烦了.) 如今makefile种类愈来愈多了,这make那make的,这perl脚本那python脚本的,各有各的优秀之处, 各都有各的 大爷级项目 在背后使用它们支持它们.作个程序员真命苦. 下载svn(windows上为TortoiseSVN) 下载python 2.7.msi (不要下载python 3)其官网长期跪伏于党威.本身找国内的下载了. 下载scons (最新的是 2.1) 安装SVN 安装python 2.7 安装scons 加环境变量. 在命令行里确认敲svn, python, scons(或 D:\Python27\Scripts\scons.bat) 都有反应 下载V8 svn checkout http://v8.googlecode.com/svn/trunk/  v8 (末尾的V8为保存目录的相对地址,能够先cd到合适的位置运行svn) 打开VS 文件->新建-->从现有代码建立项目-->VC++ 项目文件位置:  G:\v8 (下载的V8源代码的根目录位置) 注意: 要保证sln文件在代码根目录处,由于scons的配置文件SConstruct在这个位置.  ***.sln要和它在一块儿. 选择要过滤的文件类型. 若是时间多,指定具体的子目录会更明确一些. 填写项目名称(如V8) 把 显示全部文件 勾掉, 否则不少与代码无关的文件看起来很烦. 而后下一步到  如何生成项目 勾选 使用外部生成系统 调试 生成命令行这里填写: D:\Python27\Scripts\scons.bat env="PATH:D:\Program Files\Microsoft Visual Studio 8\VC\bin;D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools,INCLUDE:D: \Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include,LIB:D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib" libary=shared mode=debug msvcrt=shared 清除命令行写: D:\Python27\Scripts\scons.bat -c  便可 (注意D:\Python27\Scripts\scons.bat是个人scons存放位置,按道理若D:\Python27\Scripts已添加到环境变量中的话, 仅仅写scons就能够) libary要写shared. static超级巨大,可别自讨没趣.V8用dll更合适. msvcrt选shared更是正常的选择. 若是你安装了多个vs, 就须要再这里详细的罗列出VS的位置,不然soncs会本身去找,通常找到的是最新版本的VS. 我装了VS2005和VS2008但我更喜欢VS2005 因此命令行指定的很长.若是头文件和lib的包含有什么情况,可能都须要你照葫芦画瓢改改这里. 你若是仅有一个VS,那么生成命令行写 scons libary=shared mode=debug msvcrt=shared  便可. 若是是双核CPU 能够 soncs libary=shared mode=debug msvcrt=shared -j2  并行2路进行编译. 注意 release版本与debug版本命令行写法同样 除了mode=release 须要勾掉 与"调试"配置相同 而后保存工程. V8 工程就彻底建立好啦~~ 之后若是要修改命令行,右键属性--配置属性--NMake 便可,更复杂的就手动修改vcproj文件. 注意修改VS编译相关的项目配置是没用的,scons经过命令行参数和脚本有本身的设置. 建立一个开发环境. 点开上面保存的解决方案 ***.sln. 添加新的控制台项目test_v8到V8解决方案 . 设置test_v8为启动项目,设置它依赖于V8项目. 在test_v8下建立main.cpp 内容:(网上复制来修改的) #include <iostream> #include "../include/v8.h" //根据本身的状况选择好文件位置,或者修改项目头文件路径 #ifdef _DEBUG #pragma comment(lib,"../v8_g.lib") #else #pragma comment(lib,"../v8.lib") #endif //v8 need this  使用V8须要连接ws2_32.lib和winmm.lib #pragma comment( lib,"ws2_32.lib" ) #pragma comment(lib,"winmm.lib") using namespace v8; int main(int argc, char* argv[]) {     // Create a stack-allocated handle scope.     HandleScope handle_scope;     // Create a new context.     Persistent<Context> context = Context::New();     // Enter the created context for compiling and     // running the hello world script.      Context::Scope context_scope(context);     // Create a string containing the JavaScript source code.     Handle<String> source = String::New("'Hello' + ', World!'");     // Compile the source code.     Handle<Script> script = Script::Compile(source);     // Run the script to get the result.     Handle<Value> result = script->Run();     // Dispose the persistent context.     context.Dispose();     // Convert the result to an ASCII string and print it.     String::AsciiValue ascii(result);     printf("%s\n", *ascii);     return 0; } 而后按F7编译. 2010年以后的机器通常几分钟就编译完. 而后在V8项目中找到  src/handles.cc加断点于下面这个函数: Handle<Object> GetProperty(Handle<JSReceiver> obj,                            const char* name) 而后F5, OK. 命中断点. 如今V8的一切就彻底在你眼前. 你能够开始 美滋滋 的阅读/调试/使用 V8的代码了.
相关文章
相关标签/搜索