Windows下從原始碼編譯Skia

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.