作成日: 2012/01/10

メモ: Chromium のビルド

概要

最近は Firefox から心移りしてしまい Google Chrome ばかり使っている私ですが、そのベースとなる Chromium をビルドしてみました。
Chromium はオープンソースのウェブブラウザとして The Chromium Projects で公開されています。

ビルド環境は以下のとおりです。

  • OS: Windows 7 Ultimate (x64)

  • CPU: Intel Core i7 965 3.2 GHz

  • Visual Studio 2010 Professional SP1

  • メモリ: 12 GB

作業は、ほぼ Build Instructions (Windows) に記載の手順で行いました。

以下の説明で特に記載が無い場合、デフォルトの設定 (SDK などは C ドライブの規定の場所) でインストールしています。
なお、Chromium のソースや関連するツールは、「C:\Bin\Chromium\」フォルダを作成し、その下に配置することを前提に記述しています。
※Chromium のソースを格納するフォルダパスにはスペースを含めないで下さい、とのことです (例えば、「C:\Build Files\The Chromium Projects\」とかは駄目なようで、スペースを含まない形、例えば、「C:\BuildFiles\TheChromiumProjects」などとして下さい)。

ビルドに必要な環境
  • Windows XP SP3 以上

    • 64 ビット OS を強く推奨するそうです。
      ※私見ですが、、、4 GB 以上のメモリをフルに使える 64 ビット OS の方がビルドには有利だと思います。

  • Visual Studio Express、Standard、または Professional (2008 または 2010)

    • Express 以外のバージョンについて

      • 「X64 Compilers and Tools」が Visual Studio の一部としてインストールされていることを!!!必ず!!! 確認してください。 VS 2008 SP1 のバグが原因で、後でインストール内容を変更することができなくなるそうです。

      • VS 2008 Standard Edition を使っている場合、C++ と共に C# 開発環境もインストールして下さい。 これをしないと KB969866 に記載のように、 cl.exe がコピーされないそうです。

    • Express バージョンでは、デバッグが非常に制限されることを心に留めておいて下さい、とのことです。

整備しなければならない環境

※VS 2010 でビルドするのに必要な作業のみ記載しています。それ以外のバージョンではビルドを試してないので、VS 2010 に関係ない内容は記載を省略しています。ごめんなさい。

  1. Visual Studio 2010 Service Pack 1 のインストール

    ※元々 SP1 を当ててありましたので、今回の作業では何もしていません。

  2. Microsoft Windows SDK for Windows 7 and .NET Framework 4 (バージョン 7.1) のインストール

    インストールが途中でエラーとなり中断してしまうため、試行錯誤しました。最終的に、

    • Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO) (バージョン 7.1) の GRMSDKX_EN_DVD.iso (x64 版) をダウンロードして使いました。

    • 「Installation of the “Microsoft Windows SDK for Windows 7″ product has reported the following error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document for further information.」なるエラーでインストーラが途中で終了してしまい、以下のドキュメントを参考にさせていただき、作業しました。

      具体的には、

      • レジストリエディタを起動し、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components」以下のキーの所有者を Administrators (グループ) にし、さらに Administrators (グループ) からのアクセス許可をフルコントロールにしました。

        アクセス許可 アクセス許可のプロパティ

        所有者を Administrators (グループ) に変更:
        ※後からキャプチャしたので、下図では [現在の所有者] が Administrators になっていますが、元は SYSTEM になっていました。

        所有者をAdministratorsにする

        Administrators (グループ) からのアクセス許可をフルコントロールに変更:

        Administratorsからフルコントロールにする
      • [コントロールパネル] - [プログラムと機能] を開き、以前にインストールしてあった「Microsoft Visual C++ 2010 x64 Redistributable」および「Microsoft Visual C++ 2010 x32 Redistributable」をアンインストールしました。

      • SDK のインストール時に、パッケージの選択画面で「Visual C++ Compiler」のチェックを外してインストールしました。

      最初に、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components」以下のキーの所有者変更とアクセス許可設定を行い、インストールを再試行したのですが、途中でエラーとなり中断してしまいました。
      その後、Redistributable のアンインストールを行い再度トライすると、無事インストールが完了しました。
      ただし、最初の方は原因がよくわからず試行錯誤していましたので、キーの所有者変更とアクセス許可設定の効果が無いとはいいきれません。

  3. Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラム の適用

    Visual C++ のコンパイラとライブラリをインストールします。

  4. VS 2010 がデフォルトで SDK 7.1 を参照するように設定する

    ※管理者権限で作業してください。管理者権限以外で作業した場合、修正した内容を上書き保存できません。

    !!!!!重要!!!!!: 必ず編集するファイルのバックアップを取って下さい。間違って修正した場合、IDE がロードできなくなる可能性があるかもしれません。必ず元に戻せるようにしてから作業してください。

    「C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.default.props」を開き、「v100」の文字列を「Windows7.1SDK」に置換し、上書き保存します。

    デフォルトのツールセットの設定
  5. DirectX Software Development Kit (June 2010) のインストール

  6. Chromium depot_tools のインストール

    ※「Windows (Cygwin and non-Cygwin)」の箇所に書かれている「Non-cygwin」にあたる作業を行い、「C:\Bin\Chromium\depot_tools\」下にインストールします。

    1. depot_tools.zip をダウンロードします。

    2. ダウンロードしたファイルを「C:\Bin\Chromium\depot_tools\」下に展開します。

    3. コマンドプロンプトを開き「C:\Bin\Chromium\depot_tools\」に移動し、「gclient」を実行します。

      gclientの実行

      subversion、python など必要なツールがインストールされます。

    4. [コントロールパネル] - [システム] - [システムの詳細設定] を開き (UAC の昇格ダイアログが開いた場合は管理者のパスワードを入力します)、「システムのプロパティ」ダイアログの [詳細設定] - [環境変数] で、[システム環境変数] の、環境変数「Path」の末尾に「C:\Bin\Chromium\depot_tools」を追加します。
  7. ソースコードのダウンロードと展開

    1. Get the Code の「Bootstrap using the tarball」の説明の中に「source tarball」へのリンクがありますので、クリックして「chromium.rXXXXXX.tgz」をダウンロードします。
      ※XXXXXX の箇所は数字が入ります。

    2. ダウンロードしたファイルを展開し、「home/chrome-svn/tarball/chromium/」を「C:\Bin\Chromium\chromium\」にコピーします。

      home/
          chrome-svn/
              tarball/
                  chromium/ → C:\Bin\Chromium\chromium\

      tarballの展開
    3. コマンドプロンプトを開き、「C:\Bin\Chromium\chromium\src\」へ移動し、「gclient sync --force」を実行します。
      tarball と最新版との差分が取得され、ソースが最新になるよう更新されます。

      ソースを最新に同期させる
    4. そのまま、コマンドプロンプトで、「set GYP_MSVS_VERSION=2010」を実行し、その後で「gclient runhooks --force」を実行します。
      VS 2010 でビルドするために必要なソリューションファイル、プロジェクトファイルなど、プラットフォーム毎に必要なファイルが生成されます。

      ソリューションファイルなどを生成する

      ※GYP (Generate Your Projects の略らしい) と呼ばれるファイル生成ツールが VS 2010 をうまく認識できないらしく、VS 2010 に対応したソリューションファイルやプロジェクトファイルを生成するためには、環境変数「GYP_MSVS_VERSION」に「2010」を設定する必要があるそうです。
      なお、VS 2010 Express でビルドする場合は、環境変数「GYP_MSVS_VERSION」に「2010e」を設定します。

プロジェクトの設定 (DirectX SDK)

※ユーザー単位の設定になります。この設定は同じユーザーでログオンして使用するプロジェクトで共通に利用されます。

「C:\Bin\Chromium\chromium\src\chrome\chrome.sln」を開きます。

メニューから [表示] - [プロパティマネージャー] を開きます (開くまでに少し時間がかかります)。
※私の環境ではプロパティマネージャーが [表示] の下に無く、探し回りました。[表示] - [その他のウィンドウ] - [プロパティマネージャー] にありました。

適当なプロジェクト (例えば、chrome) を選び、「Debug|Win32」または「Release|Win32」(どちらでも構いません) の下の「Microsoft.Cpp.Win32.user」を右クリックして、プロパティを表示し、[共通プロパティ] - [VC++ ディレクトリ] で、以下を設定します。

  • [インクルードディレクトリ] の先頭に「$(DXSDK_DIR)\Include」を追加

  • [ライブラリディレクトリ] の先頭に「$(DXSDK_DIR)\Lib\x86」を追加

プロパティマネージャー インクルード・ライブラリディレクトリの設定

※ちなみに、上記で設定している「$(DXSDK_DIR)」マクロは、DirectX SDK をインストールした際に設定されるようです。マクロ変数定義を確認すると、インストール先が参照されていました。

$(DXSDK_DIR)マクロ変数の確認
ビルド

メニューから [ビルド] - [バッチビルド] を開き、プロジェクト「chrome」の「Debug|Win32」または「Release|Win32」のどちらかにチェックを入れ、[ビルド] をクリックし、ビルドを開始します。
※私は「Debug|Win32」をビルドしました。

ビルド

ちなみに、私の環境では、ビルド完了までに 1 時間程度要しました。

「Debug|Win32」をビルドした場合、「C:\Bin\Chromium\chromium\src\build\Debug\chrome.exe」が、「Release|Win32」をビルドした場合、「C:\Bin\Chromium\chromium\src\build\Release\chrome.exe」が、実行形式としてビルドされます。

ビルドされた実行形式 Chromium の実行