LoginSignup
5
5

More than 5 years have passed since last update.

ChakraCoreをビルドする

Last updated at Posted at 2016-01-15

ChakraCoreが公開されました。
早速ビルドしてみましょう。

ChakraCoreはMicrosoft EdgeのJavaScriptエンジンのコア部分です。

短い結論

  1. プラットフォームをx64x86に変更
  2. 3ファイルの文字コードをBOM付きUTF-8に変更
  3. Releaseビルドに変更

環境

  • VMware Fusion 8
  • Windows 7 Professinal 64 bit
  • Visual Studio Community 2015 Update1

手順

チェックアウト

git clone https://github.com/Microsoft/ChakraCore.git

ソリューションを開く

Build\Chakra.Core.slnをVisual Studioで開きます。

Visual C++用セットアップ

Visual C++ 用のコンポーネントがない場合は、次の警告が出ます。

インストール コンポーネントがないため、プロジェクト 'ch' を読み込めませんでした。修正するには、以下の選択をして Visual Studio セットアップを起動してください:
Install Visual C++ 2015 Tools for Windows Desktop

対策

ファイル(F) > 新規作成(N) > プロジェクト(P)からテンプレート > Visual C++ > Install Visual C++ 2015 Tools for Windows Desktopを選びます。

参考リンク

C++/Visual Studio 2015 プログラミング

ビルドのプラットフォーム

ARM用にビルドするにはWindows 10 SDKが必要です。
x64またはx86に変更します。

参考リンク

Building ChakraCore · Microsoft/ChakraCore Wiki

文字コード

この節の情報は古いです。最新のmasterは修正済みです。

Microsoftらしからぬことに文字コードがBOM無しUTF-8です。
日本語OSでは文字コードをCP932に判定されるファイルがあります。
その場合は以下の警告が出ます。

警告  C4819   ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

同時に次のエラーが出てビルドに失敗します。

エラー   C2220   警告をエラーとして扱いました。'object' ファイルは生成されません。

対策1か対策2のどちらかを行います。

対策1 対象ファイルをBOM付きUTF-8で保存

CP932に判定されなくなります。
変更ファイルが次の三つで少ないのでこちらがおすすめです。

  • lib/Runtime/Library/ArgumentsObject.h
  • lib/Runtime/Library/MathLibrary.cpp
  • lib/common/Memory/PageAllocator.h
  1. 対象ファイルを開いて、ファイル(F) > 保存オプションの詳細設定(V)を開く
    スクリーンショット 2016-01-16 4.46.42.png

  2. Unicode(UTF-8 シグネチャ付き)- コードページ 65001を選択
    スクリーンショット 2016-01-16 4.49.08.png

  3. OKをクリック

対策2 対象プロジェクトのビルドオプションを変更する

対象プロジェクトから/WXフラグを消します。
対象プロジェクトが多いので大変です。

  1. プロジェクトのプロパティを開く
  2. 構成プロパティ > C/C++ > 全般を開く
  3. 警告をエラーとして扱ういいえ(/WX-)に変更 スクリーンショット 2016-01-16 4.40.58.png
  4. OKをクリック

参考リンク

コンパイラ エラー C2220

本家対応済み

文字コードのissue。
Compiler Error under Windows 7 SP1 32-bit Chinese Simplified · Issue #99 · Microsoft/ChakraCore

Pull Request、マージ済み。
Fix #99: Compiler Error under Windows 7 SP1 32-bit Chinese Simplified due to Encoding issue. by leejingbo · Pull Request #100 · Microsoft/ChakraCore

ASCIIでない記号が入っているため、文字コードをCP932(OSの標準)として判定してしまうようです。
https://github.com/Microsoft/ChakraCore/pull/100/files

ビルドの構成

次の エラーが出ます。

エラー (アクティブ)     この定数式には、必要な型 "unsigned long long" ではなく型 "Js::OpCode" が指定されています

デバッグ用のコードです。

#if DBG_DUMP
        uint byteCodeDataSize;
        uint byteCodeAuxiliaryDataSize;
        uint byteCodeAuxiliaryContextDataSize;
        uint byteCodeHistogram[OpCode::ByteCodeLast];
        uint32 forinCache;
        uint32 forinNoCache;
#endif

対策

ビルドの構成をReleaseに変更します。

参考リンク

ChakraCoreをビルドしてC#から使うはじめの一歩 - ぷろじぇくと、みすじら。 - Misuzilla.org

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5