環境準備
- Windows7/10電腦需要能訪問https://skia.org/和https://skia.googlesource.com/skia.git
- 在Windows上安裝Visual Studio 2017
- 在Windows上安裝Python v2.7.x(必須是v2,不能使用v3),32位版本,例如python-2.7.18.msi。環境變量path需要添加python v2.7.x。如果電腦同時還裝了v3,那麼環境變量path需要把v2排在v3前面。
- 在Windows終端輸入命令"python --version"可以查看python2是否正確安裝。
- 在Windows上安裝Git工具
下載源碼和依賴庫
截止目前,skia的版本是m84,https://skia.googlesource.com/skia.git/+refs
我們使用Windows終端命令行,把源碼下載:
1、先設置git http代理:
>git config --global http.proxy http://127.0.0.1:8000
>git config --global https.proxy http://127.0.0.1:8000
設置成功,代理信息會記錄在C:\Users\firecat\.gitconfig
2、再用git命令下載skia源碼
>git clone https://skia.googlesource.com/skia.git
3、再下載依賴庫
>cd skia
>python tools/git-sync-deps
下載gn和ninja工具
網上有好心人已經準備好了,直接下載就行了,然後解壓到\skia\bin裏面。環境變量path需要添加bin路徑,例如我的路徑是:
F:\tmp-source\qt-hmi\skia\skia\bin
下載鏈接:https://download.csdn.net/download/qq_35824650/12398406
源碼編譯
- 參數說明
is_debug=true 表示Debug
is_component_build=true 表示動態庫編譯【推薦,否則是靜態庫編譯,運行時庫是MTd/MT】
target_cpu="x86" 表示Win32平臺
ide=vs 表示使用VS IDE編譯 【不推薦,容易出錯】
- x64位 Debug編譯:
>bin\gn gen out\Debug64
>bin\gn args out\Debug64
#這句話輸入之後,會彈出一個記事本文件,請手動輸入要編譯的參數
# Set build arguments here. See `gn help buildargs`.
is_debug=true
is_component_build=true
保存記事本,然後繼續終端命令
>bin\gn gen out\Debug64
>bin\ninja -C out\Debug64
- x64位 Release編譯:
>bin\gn gen out\Release64
>bin\gn args out\Release64
# Set build arguments here. See `gn help buildargs`.
is_debug=false
is_component_build=true
>bin\gn gen out\Release64
>bin\ninja -C out\Release64
- x86位 Debug編譯:
>bin\gn gen out\Debug86
>bin\gn args out\Debug86
# Set build arguments here. See `gn help buildargs`.
is_debug=true
is_component_build=true
target_cpu="x86"
>bin\gn gen out\Debug86
#執行ninja之前,需要先打開路徑\skia\out\Debug86的toolchain.ninja文件,手動刪除所有
"cmd /c C:/Program Files (x86)/Windows Kits/10/bin/SetEnv.cmd /x86 &&"的文本內容,
#進入文件夾C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
拷貝以下3個文件到\skia\out\Debug86
msobj140.dll
mspdb140.dll
mspdbcore.dll
>bin\ninja -C out\Debug86
- x86位 Release編譯:
>bin\gn gen out\Release86
>bin\gn args out\Release86
# Set build arguments here. See `gn help buildargs`.
is_debug=false
is_component_build=true
target_cpu="x86"
>bin\gn gen out\Release86
#執行ninja之前,需要先打開路徑\skia\out\Release86的toolchain.ninja文件,手動刪除所有
"cmd /c C:/Program Files (x86)/Windows Kits/10/bin/SetEnv.cmd /x86 &&"的文本內容,
#進入文件夾C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
拷貝以下3個文件到\skia\out\Release86
msobj140.dll
mspdb140.dll
mspdbcore.dll
>bin\ninja -C out\Release86
常用的gn命令
bin\gn help args
bin\gn help static_library
bin\gn help buildargs
bin\gn args --list out\Release64
bin\gn args --list out\Debug64
bin\gn args --list out\Release86
bin\gn args --list out\Debug86
bin\ninja -help
之前編譯失敗的命令,也記錄一下
不建議使用VS的編譯方式,容易失敗
>bin/gn gen out/Static --args="is_official_build=true skia_use_libpng=false skia_use_zlib=false skia_use_libjpeg_turbo=false skia_use_harfbuzz=false skia_use_libwebp=false skia_use_expat=false"
vs要用管理員身份打開,不然編譯的時候會報錯,說什麼沒有訪問權限
x64 Debug
>bin\gn gen out/vsx64d --ide=vs --args="is_debug=true is_official_build=false is_component_build=true"
x64 Release
>bin\gn gen out/vsx64 --ide=vs --args="is_debug=false is_official_build=false is_component_build=true"
x86 Debug
>bin\gn gen out/vsx86d --ide=vs --args="is_debug=true is_official_build=false is_component_build=true target_cpu=\"x86\""
x86 Release
>bin\gn gen out/vsx86 --ide=vs --args="is_debug=false is_official_build=false is_component_build=true target_cpu=\"x86\""
參考文獻
https://www.jianshu.com/p/4225f4342d18 [圖形引擎Skia之一]源碼下載與編譯(Windows)
https://blog.drawoceans.com/codes/19/ 在Windows上使用VS2017編譯64位和32位Skia
https://blog.csdn.net/qq_35824650/article/details/105984644 國內正確編譯V8和Skia