天天看點

Windows環境VS2017編譯skia庫-m84,親測成功,使用官方編譯的方法

環境準備

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環境VS2017編譯skia庫-m84,親測成功,使用官方編譯的方法

在Windows終端輸入指令"python --version"可以檢視python2是否正确安裝。

Windows環境VS2017編譯skia庫-m84,親測成功,使用官方編譯的方法

在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

設定成功,代理資訊會記錄在C:\Users\firecat\.gitconfig

2、再用git指令下載下傳skia源碼

>git clone

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

本人也備份了一份:

https://download.csdn.net/download/libaineu2004/12432424

源碼編譯

參數說明

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\ninja -C out\Debug64

x64位 Release編譯:

>bin\gn gen out\Release64

>bin\gn args out\Release64

is_debug=false

>bin\ninja -C out\Release64

x86位 Debug編譯:

>bin\gn gen out\Debug86

>bin\gn args out\Debug86

target_cpu="x86"

#執行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

#執行ninja之前,需要先打開路徑\skia\out\Release86的toolchain.ninja檔案,手動删除所有

拷貝以下3個檔案到\skia\out\Release86

>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://download.csdn.net/download/libaineu2004/12436349

參考文獻

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

https://gitee.com/QtSkia/QtSkia

google的 skia渲染架構, 內建到Qt中

https://gitee.com/QtSkia/QtSkia/blob/master/doc/Examples-zh.md

SkCanvas是一個類似于QPainter的畫筆,但性能和功能都比QPainter強大許多。

繼續閱讀