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.exeがC:\local\LLVM\bin\clang-cl.exeに存在する配置になる。