今天心血來潮, 下載了 v8,,然后就想着用vs編譯
但是大家都苦惱的是 v8並不直接提供 vs用的項目文件和解決方案(.sln)
於是,在網上搜來搜去, 折騰來折騰去的;
終於一點一點的嘗試, 可以執行 python gypfiles\gyp_v8.py -Dtarget_arch=x64
但是網上搜到的都是 python build\gyp_v8.py -Dtarget_arch=x64
可我git clone 的沒有build文件夾啊, 好歹根據
https://github.com/v8/v8/wiki/Building-with-Gyp-(deprecated)#visual-studio
說的 在gypfiles目錄找到了,但是執行命令,cpu瘋狂一陣,之后 就一個out的目錄,什么 sln,vcxproj 一個都沒有看到
郁悶了,
,
,
然后就一路郁悶,到處翻騰, 看不同的,相關的 甚至是名詞解釋
直到下午4點多, 在網上搜索"gypfiles\gyp_v8" ,在列表里看到 node.js 甚至下載了其源代碼用里面的 v8 測試, 也不行, 最后后還是不了了之
然后又翻了下搜索結果,看到 Gyp語法規則參考 & 工具的使用 (注1) , 誒!? 看看唄,也許能找到什么有用的東西呢
於是點進去瀏覽了, 當最后看到 gyp命令行 參數 --f 時,這個或許有用呢, 趕快測試,
--fmsvs 報錯 不認識的參數,
改一下
-f msvs
哈,哈哈 有別的輸出, 找不到testing下的文件!!! 貌似有戲,
看看, texting目錄,
唉!!! 那不是是 vcxproj 文件么, 那不是 sln文件么!!!!!!!!
看看 v8 項目文件產生沒,
v8/沒有
v8/build/ 沒有
v8/gypfiles/ 哦哦, 有了!!! 有了 :)
v8/src/ 也有v8.sln等項目文件了!!!!
大功告成!
折騰我快一天了有沒有啊!!!!
下面附上我總結的步驟吧
1. 下載安裝 Python 2. 下載 gyp 並安裝 2.1 下載 gyp , 到一個目錄 git clone https://github.com/svn2github/gyp 也可以在 v8 附屬項目中下載(見3.1) 2.2 安裝 gup 在 gyp 目錄 執行 python setup.py install 3 下載 v8 及附屬項目 3.1 下載 v8 git clone https://chromium.googlesource.com/v8/v8 git clone https://chromium.googlesource.com/external/gyp.git ./v8/tools/gyp //需要安裝 gyp ^python setup.py install^ git clone https://chromium.googlesource.com/chromium/deps/icu.git ./v8/third_party/icu //^icu 比較大(125M)^ git clone https://chromium.googlesource.com/chromium/src/tools/clang.git ./v8/tools/clang git clone https://chromium.googlesource.com/external/github.com/google/googletest.git ./v8/testing/ rename googletest gtest //改名 git clone https://chromium.googlesource.com/chromium/deps/cygwin.git ./v8/third_party/cygwin
//git clone https://chromium.googlesource.com/chromium/src/build.git ./v8/build 4. 創建VS項目工程 4.1 設置環境 變量 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 set GYP_MSVS_VERSION=2015 //set GYP_GENERATORS=ninja //不需要 //set GYP_DEFINES=component=shared_library //這個也不需要 4.2 在 v8 目錄執行,創建VS解決方案 python gypfiles\gyp_v8.py -Dtarget_arch=x64 -f msvs
生成DLL
python gypfiles\gyp_v8.py -Dtarget_arch=x64 -Dcomponent=shared_library -f msvs
生成lib
python gypfiles\gyp_v8.py -Dtarget_arch=x64 -f msvs
-f msvs <--- 突然讓我想到了一個詞語: 畫龍點睛 !
然后編譯, 也是有個坑, 一堆錯誤:
fatal error C1083: 無法打開包括文件: “base/trace_event/common/trace_event_common.h”: No such file or directory
google的和github上都沒有這個文件,找不到
最后想想, 下載的node.js 里有v8 於是找找 還真有,
於是整個base目錄(其實里面也就這么一個文件)直接拷貝到v8目錄下,與src目錄同級
所有v8開頭的項目的屬性都把 靜態庫 改成 動態庫,包括 icuuc 和 icui18n , 再編譯
非常耗時間, 我四核的, 繼續等吧,
還有個:
2>parsing\parser.cc(1540): error C2220: 警告被視為錯誤 - 沒有生成“object”文件
2>parsing\parser.cc(1540): warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數據丟失
導致后面幾千個錯誤.... shit,也是個坑, 受不了了,直接取消了編譯(Ctrl+Break) ...
看下, parser.cc 文件編碼是Unicode的, 其他的都是ansii的編碼, 反正里面也只有英文字符,不在乎編碼, 改成和其他一樣 ansii 編碼了
編譯很慢, 但是結果還是出現很多錯誤,都是差不多的錯誤
C2220 的錯誤, 和其他 "note: 參見對正在編譯的類 模板 實例化"的警告 去掉 編譯的參數 /WX , 更改警告等級甚至關閉警告,都沒有用,
先這樣吧, 等哪天有興趣了在折騰....
如果你知道怎么解決,請告訴我,謝謝!!!
本文地址:http://www.cnblogs.com/lzpong/p/5888289.html
[注1: Gyp語法規則參考 & 工具的使用:http://www.cnblogs.com/x_wukong/p/4829598.html]