標籤:rar 外掛程式 ansi 事件 load 過程 ext vsp android
在PPAPI裡面畫圖,能夠結合第三方的圖形庫。比方Cairo、Skia。
Google Chrome、Chromium和Android都使用Skia作為畫圖引擎。我也來試試Skia,先過編譯關。
foruok原創。如需轉載請關注foruok的訂閱號“程式視界”聯絡foruok。
CEF編譯出的Skia不可單獨用
Chromium使用Skia。Windows下從原始碼編譯CEF說明了怎麼編譯CEF,它會捎帶著編譯Chromium。裡面有Skia,但它編譯出來的skia_library.lib無法單獨使用,加到VSproject裡。報N多連結錯誤。
僅僅好自己編譯了。
單獨編譯Skia
Windows下編譯指南:https://skia.org/user/quick/windows。首先你系統得有Python。我們編譯過CEF,有了。
下載skia到這裡:https://skia.org/user/download。
須要使用git。depot_tools非常全。什麼都有。
我們之前編譯CEF,已自己主動下載depot_tools。在E:\sources\CEF\2526\depot_tools,設定到path中:
set path=E:\sources\CEF\2526\depot_tools;%path%
然後使用git下載Skia:
git clone https://skia.googlesource.com/skia.git
然後執行下列命令:
cd %SKIA_CHECKOUT_DIR%SET "GYP_GENERATORS=ninja,msvs" //告訴GYP。產生ninja構建檔案和msvs構建檔案python bin/sync-and-gyp SET "GYP_GENERATORS="
上面命令完畢後,基於ninja的構建檔案在這裡:E:\sources\skia\out\Release(Debug)\build.ninja。基於VS2013的解決方式在這裡:E:\sources\skia\out\skia.sln。
我選擇編譯Release版本號碼。
預設編譯“most”目標。most.ninja在這裡:E:\sources\skia\out\Release\obj\gyp,它指定編譯skia_lib和dm、SampleApp、HelloWorld等模組。
編譯命令例如以下:
cd out\Releaseninja
編譯到effects模組,出錯了。說:
ninja: build stopped: subcommand failed.
加個參數,再來:
ninja -v > skia_build.log
研究skia_build.log,發現錯誤資訊例如以下:
[6/1807] ninja -t msvc -e environment.x86 – “E:\software\VS2013_64_update4\VC\bin\amd64_x86\cl.exe” /nologo /showIncludes /FC @obj\tools\imgslice.imgslice.obj.rsp /c ….\tools\imgslice.cpp /Foobj\tools\imgslice.imgslice.obj /Fdimgslice.pdb
FAILED: ninja -t msvc -e environment.x86 – “E:\software\VS2013_64_update4\VC\bin\amd64_x86\cl.exe” /nologo /showIncludes /FC @obj\src\effects\effects.SkDisplacementMapEffect.obj.rsp /c ….\src\effects\SkDisplacementMapEffect.cpp /Foobj\src\effects\effects.SkDisplacementMapEffect.obj /Fdeffects.pdb
e:\sources\skia\src\effects\skdisplacementmapeffect.cpp : error C2220: 警告被視為錯誤 - 沒有產生“object”檔案
e:\sources\skia\src\effects\skdisplacementmapeffect.cpp : warning C4819: 該檔案包括不能在當前字碼頁(936)中表示的字元。請將該檔案儲存為 Unicode 格式以防止資料丟失
錯誤C2220是由於把全部警告當做錯誤了,編譯時間加了/WX標記。而警告C4819。MSDN說,“在具有不能表示檔案裡全部字元的字碼頁的系統上編譯ANSI 源檔案時,出現C4819”。
記得之前編譯CEF(參考Windows下從原始碼編譯CEF)時說要設定系統locale為英文,再試試吧。
(⊙o⊙)…,真過了。
編譯完畢後,lib檔案和exe檔案都在E:\sources\skia\out\Release檔案夾下。有這麼些skia庫,見:
試著執行一下HelloWorld.exe(在E:\sources\skia\out\Release檔案夾下)。效果例如以:
嗯,不錯,能夠繼續前進了。
下次我會把PPAPI和Skia結合起來試試。
其它參考文章:
- CEF Windows開發環境搭建
- CEF載入PPAPI外掛程式
- VS2013編譯最簡單的PPAPI外掛程式
- 理解PPAPI的設計
- PPAPI外掛程式與瀏覽器的互動過程
- Windows下從原始碼編譯CEF
- 編譯PPAPI的media_stream_video示範範例
- PPAPI外掛程式的畫圖與輸入事件處理
- 在PPAPI外掛程式中建立本地表單
- PPAPI外掛程式與瀏覽器的通訊
Windows下從原始碼編譯Skia