JavaScriptをLuaやSquirrelのように使いたいな~とふと思い立ったので、ちょっとやってみようと思います。
今回はそのための前準備としてV8エンジンの準備の記事です。
V8の準備
JavaScriptの実行エンジンとして google の V8 を使用します。
まずは git://github.com/v8/v8.git からエンジン本体をダウンロードして、
ライブラリを作成することが必要です。
現在では、2012/12/08現在ではコードのライセンスは New BSD License(修正BSD)となっており、組み込んで使う用途について使いやすいかと思います。
(必要なことが、著作権表示&ライセンス文章&無保証を書いたテキスト同梱くらいなので)
V8エンジンのビルド
ソースコードをダウンロードして、VisualStudio2010でライブラリをビルドすることとします。
この手順がちょっと一手間かかります。VisualStudioのプロジェクトが付属せず、GYPによってプロジェクトファイルを作成するところからやらなければならないためです。
また、下記の依存ツール群は必ず示している場所に配置されるようにしなければなりません。そうしないと、VisualStudioでライブラリをビルドする際に妙なエラーに悩まされることになります。(実際にやりました…。)
下記で説明しますが、配置後はこのようになっている必要があります。
GYPを取得
GYPをSVNから取得して、v8/buildの中に配置されるようにします。
http://gyp.googlecode.com/svn/trunk
cygwinとPythonを取得
これらをSVNから取得して、v8/third_partyの中に配置されるようにします。
http://src.chromium.org/svn/trunk/deps/third_party/cygwin (リビジョン:66844)
このGYPはGoogleが用意しているマルチ開発環境向けのプロジェクト作成ツールのようです。cmake的な物と言っていいと思います。
ただ個人的に残念だったのが、cygwinとpythonと必要とすることでしょうか。
コマンドプロンプトを開いて、v8の場所で以下のコマンドを実行します。
[cpp]
third_party\python_26\python.exe build\gyp_v8 -G msvs_version=2010
[/cpp]
すると、この場所に all.slnというソリューションファイルが出来るので、これを用いてVisualStudioでビルドします。
問題が無ければ、ビルドが正常終了するはずです。
もしビルドでエラーが出るようであれば、third_partyのフォルダ配置が間違っていないかを確認してみてください。
実行テスト
サンプルとして付属している build/Release/shell.exe を用いて動作確認してみます。
実行させると入力受付状態になるので下記のような感じで例のHello,worldを入力してみます。
[cpp]
> var str = “Hello,world”
> str
[/cpp]
ライブラリ
生成されるライブラリは4つのようです。
- preparse_lib
- v8_base
- v8_nosnapshot
- v8_snapshot
shellサンプルをみると、リンクされているのは下記のもののようです。
- v8_snapshot
- v8_base
これをつかえば、自分のC++プログラムからJavaScriptを実行するとか出来るようになりそうです。