搭建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的代碼了.
相關文章
相關標籤/搜索