WindowsでChromiumをビルド

https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

システム要求

  • 64bitインテルマシン、RAM最低8G、16G以上が望ましい。
  • 100G以上のNTFSディスク容量、FAT32はだめ。
  • Visual Studio 2015 Update 3。
  • Windows 7 or newer

64bitは絶対必要らしい、インテルじゃなきゃダメかどうかは不明。AMDでもできた。インテルとはx86CPUのことか?、RAMは4Gでもできたが時間がかかる。ハードディスクは100G近くいくがNTFS圧縮が結構効く。

セットアップ

2016年12月現在、Visual Studio 2015とWindows SDK 14393が必要。このSDKじゃないとだめらしいが詳細は不明。

depot_toolsのインストール

depot_toolsをダウンロードし、どこかに解凍。ここではY:\src\depot_tools。

PATHにY:\src\depot_toolsを追加する。システムを変更してもいいがここではbatファイルC:\src\startcmd.batを作成し対応。

@echo off
REM always launch 64bit cmd, https://stackoverflow.com/a/27093204
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%"=="" (
if exist %SystemRoot%\Sysnative\* set "SystemPath=%SystemRoot%\Sysnative"
)


REM set path to depot_tools
set PATH=%~dp0depot_tools;%PATH%


REM This tells depot_tools to use your locally installed version of Visual Studio
REM (by default, depot_tools will try to use a google-internal version).
set DEPOT_TOOLS_WIN_TOOLCHAIN=0


REM make current directory the location this script exists.
cd %~dp0


REM always launch 64bit cmd
%SystemPath%\cmd.exe /k

DEPOT_TOOLS_WIN_TOOLCHAINはgoogle用、0を設定

コマンドプロンプト上でgclientを実行。プラットフォームごとに必要なものをdepot_tools内にダウンロードしインストールする。最初は少し時間がかかる。

Y:\src>gclient

終わったらwhere pythonを実行し、pythonを実行したとき、python.batになるかを確認。

 
Y:\src>where python
Y:\src\depot_tools\python.bat

Y:\src>
 

コードの取得

最初にGitの設定

 
> git config --global user.name "My Name"
> git config --global user.email "my-name@chromium.org"
> git config --global core.autocrlf false
> git config --global core.filemode false
> git config --global branch.autosetuprebase always
 

autocrlfはちゃんとしないとパッチがうまくいかないことがある。

chromiumディレクトリを作成し移動。

 
Y:\src>mkdir chromium
Y:\src>cd chromium
Y:\src\chromium>
 

fetchでソースをとってくる。

 
Y:\src\chromium>fetch --no-history chromium
 

すごく時間がかかる。chromiumは外部リポジトリからもソースを取り込むのでメタツールgclientを使うが、fetchはラッパー。fetch_config\chromium.pyを読んで取り込む。fetchを使うのは初めの一回だけ、プラットフォーム依存の初期化処理。次からのアップデートはgclientを使う。中核はgit clone https://chromium.googlesource.com/chromium/src.git。--no-historyをつけるとレポジトリの履歴を取得しない。最初にgclientのマスターファイルY:\src\chromium\.gclientを作成し、gclientを起動する。全部やり直すときは.gclientを消してfetch。

ビルド

チェックアウトが終わったらsrcに移動してビルドを行う。

 
> cd src
> Y:\src\chromium\src>gn gen --ide=vs out\Default
 

ビルドは2段階で行う。まずgnで依存関係を解決しその結果を.ninjaファイルに書き込む。次にninjaが実際のビルドをする。genは作成のサブコマンド、--ide=vsはVisual Studio 2015用のプロジェクトファイルも作成してくれるが、ビルドはninjaを使う。VSでやるときはdepot_toolsにパスが通っていないとならない。out\Defaultはここにすべてが作成される出力先。出力先を複数つくることができる。

gn genが終わったらout\Defaultのいろいろな設定。all.slnも作られるがすごく重いのでまだ開かない方がいい。

 
> Y:\src\chromium\src>gn args out\Default
 

メモ帳でargs.gnが開かれる。ここに設定を書く。例えば以下。

 
enable_basic_printing=true
enable_nacl=false
enable_print_preview=false
enable_widevine=true
is_component_build=false
is_debug=true
is_win_fastlink=false
target_cpu="x86"
 

メモ帳を閉じるとこの設定に基づいて.ninjaファイルが生成される。ビルドを2段階に分けることで、今後のデバッグ作業はninjaだけでよくなりビルド時間が短縮する。ninjaは軽量に作られている。

設定の一覧は以下のコマンドで見れる。

 
Y:\src\chromium\src>gn args --list out\Default
 

objディレクトリ配下に.ninjaやVSのプロジェクトファイルが作成され、ビルドの準備が整ったのでビルド。すごく時間がかかるがninjaはmakeみたいなツールなので途中でやめても問題ない。

 
> Y:\src\chromium\src>ninja -C out\Default chrome
 

is_win_fastlinkをtrueにするとpartialPDBがつくられる。windbgはこのPDBに対応してないようなので、ここではfalseにしている。

Page last modified on August 20, 2017, at 06:09 PM
Powered by PmWiki