ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Windows 8 で TypeScript 処理系をビルドする

TypeScript 処理系を Windows でビルドする話。 個人用メモ程度なので特に面白い話はない。

開発環境準備

Git

TypeScript 処理系のソースコードは Git でバージョン管理されているので、Windows に Git をインストールする必要がある。 Windows で動く Git はいろいろあるけど、個人的には GitHub for Windows が使いやすいと思ってる。 Windows 8 だと標準で Windows PowerShell が入っているので、GitHub for Windows をインストールして Git Shell を起動すると、PowerShell 上で git コマンドが使えるようになる。

JavaScript 処理系

TypeScript 0.8.1 は JavaScript 処理系として Windows Script Host と Node をサポートしている。 Windows 8 には Windows Script Host が最初から存在するので、これを使うなら何もインストールしなくてもよい (cscript コマンドで、コマンドラインベースの Windows Script Host が使える)。

Node を使いたいのなら Node をインストールする必要がある。 現在の最新の Node 0.8.15 については、Windows 向けにインストーラ版とバイナリ版が配布されているので好きな方をダウンロードしてきてインストール。

nmake コマンド

TypeScript では Makefile が使われているので、ビルドツールとして nmake をインストールする必要もある。 nmake コマンドが単体で配布されているのかどうかよくわからないが、少なくとも Visual Studio には同梱されているので、それを使えばよい。

Visual Studio Express 2012 for Windows 8 と Visual Studio Express 2012 for Windows Desktop をデフォルトパスにインストールしている場合、nmake コマンドは C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe にあった。 (for Windows 8 に含まれているのか for Windows Desktop に含まれているのか、両方に含まれているのかはわからない。 まあ for Windows Desktop には含まれていると思う。)

ソースコード入手

TypeScript 処理系のソースコードCodePlex でホストされている。

バージョン管理には Git が用いられているので git clone でソースコードを持ってくる。 (これ以降、コマンドライン上での操作は、git コマンドが使える Windows PowerShell 上で行うものとする。)

> git clone https://git01.codeplex.com/typescript
> cd typescript

ビルド

nmake コマンドへのパスは多分通ってないので、パスを通す必要がある (または nmake コマンド実行時にフルパスを入力する)。 PowerShell なら以下のようにしてパスを追加できる。

> $Env:Path += ';C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin'

Node を使う場合で、node.exe にパスが通っていない場合もパスを通しておく。

> $Env:Path += ';path\to\node'

あとは nmake を使ってビルドする。 ビルド時に、マクロ TYPESCRIPT_HOST にコンパイルに使用する JavaScript 処理系のコマンドを指定する必要がある。 nmake では、nmake コマンドの引数にマクロ定義を書けるので、そこで定義すればよい。

例えば、Windows Script Host を使用してコンパイラだけをビルドする場合は以下のようになる。

> nmake "TYPESCRIPT_HOST=cscript" compiler

Node を使用してテストの実行まで行うなら以下。

> nmake "TYPESCRIPT_HOST=node" runtests

ビルドのターゲットしては、コンパイラをビルドするための compiler や、テストも含めてビルドする tests、テストの実行まで行う runtests などいろいろある。 どんなターゲットがあるのかは Makefile の中を見ること。

以上。