Skiaをビルド

2019/06/20時点での記述 depot_toolsはすでにインストールされているものとする。

準備

メタビルドツールであるgnはすでにchromiumソースからは分離されているのでそれを取得する方法がskiaのビルドページに書かれている以下の内容だと思われる。

git clone https://skia.googlesource.com/skia.git
# or
# fetch skia
cd skia
python tools/git-sync-deps

しかし最後のpythonコマンドでassert gitのエラーが出るので以下のように環境変数を設定する。このエラーはpythonのsubprocessでの起動でbatファイルを見つけられないことによる。

set GIT_EXECUTABLE=C:\gsrc\depot_tools\git.bat

aptなどで必要なライブラリをインストールする(Linuxの場合)

sh tools/install_dependencies.sh

gnの引数設定

gnの引数argsはa=bなどの設定を記述しダブルクォートが必要な場合もあり、windowsのコマンドラインでは扱うのが難しいのでgn.argsというファイルに記述する。gnはこのファイルを自動で読み込む。このファイルを編集するコマンドも提供している。

gn args out\debug

このコマンドを起動するとメモ帳が起動されるのでここにgnのargs引数を記述する。

どのような引数を指定できるかは以下のコマンドで知ることができる。

gn args --list out\debug

このコマンドはgn.argsで指定したものも読み込んで有効になっている値も表示する。

プロジェクトに含まれるターゲット一覧

gnではプロジェクトツリーに含まれるビルド単位をターゲットとして管理している。ターゲットの一覧は以下のコマンドで出力できる

gn ls out\debug

実行形式のターゲットは以下のコマンドで出力できる

gn ls out\debug --type=executable

HelloWorldのビルド

実行形式のターゲットの中にHelloWorldがあるのでビルドする。

ninja -C out\debug HelloWorld

ビルド中に以下のエラーで失敗するかもしれない。

>ninja -C out\debug -j 1 HelloWorld
ninja: Entering directory `out\debug'
[339/1586] copy ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
FAILED: icudtl.dat
python C:/gsrc/skia/skia/gn/cp.py ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
CreateProcess failed: The system cannot find the file specified.
ninja: build stopped: subcommand failed.

>

これはpythonを起動できないエラーなので(python.batをうまく起動できない)以下のようにパスを通す。

C:\gsrc\skia\skia>which python
   C:\gsrc\depot_tools\python.bat

C:\gsrc\skia\skia>path
PATH=C:\gsrc\depot_tools;C:\gsrc\gbin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Linkout\bin;C:\Linkout\bin\64;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\dotnet\;C:\Users\hgArty\AppData\Local\Microsoft\WindowsApps;;C:\Users\hgArty\AppData\Local\Programs\Microsoft VS Code\bin

C:\gsrc\skia\skia>set PATH=C:\gsrc\depot_tools\win_tools-2_7_15_chromium14_bin\python\bin;%PATH%

C:\gsrc\skia\skia>which python
   C:\gsrc\depot_tools\win_tools-2_7_15_chromium14_bin\python\bin\python.exe
   C:\gsrc\depot_tools\python.bat

C:\gsrc\skia\skia>

HelloWorldの実行

out\debug\HelloWorld.exe

2019/6現在、AVXをサポートしないCPUだと実行時にエラーが出る。clangを利用すればエラーはでない。clang(LLVM)をインストールして以下の内容をargs.gnに追加(パスは自分の環境に合わせる)

clang_win="C:\\local\\LLVM"

上記の設定の場合clang-cl.exeC:\local\LLVM\bin\clang-cl.exeに存在する配置になる。

Page last modified on September 01, 2019, at 02:12 PM
Powered by PmWiki