Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@ledsun

ChakraCoreをビルドする

More than 5 years have passed since last update.

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

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ledsun
編集リクエスト、コメント大歓迎です。
luxiar
Ruby on Rails専門のWebアプリケーション開発に特化した町田の受託開発企業です

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?