WindowsでRustプログラミング(環境構築)
WindowsでRustプログラミングをやるならEclipse + RustDTがオススメです。Eclipseは統合開発環境(IDE)の名前です。RustDTはEclipseのプラグインで、Rust Development Toolingの略です。この2つを使えば、関数名の自動補完や、ブレークポイントを使ったデバッグが出来ます。ただし色分けが微妙だったりもします。(i32などの型に色が付きません。)
この記事ではEclipseとRustDTの導入方法を解説します。ついでに、デバッグビルド、ブレークポイントデバッグ、リリースビルドのやり方まで紹介しています。
1. Rustの導入
Rustの公式サイトからRustをインストールしてください。一緒にソースコードもダウンロードして展開しておきます。バージョンはNightlyがオススメです。Nightlyは高速で機能も多いです。Nightlyで追加されてる機能は公式のbookの6.1~6.10に書いてあります。また、標準ライブラリのunstableなAPI(std::intrinsics::type_nameなど)が使えるようになります。
ダウンロードはこちらから。https://www.rust-lang.org/ja-JP/install.html
2. Racerの導入
以前書いた記事を参考にしてください。WindowsでRacerのビルド(コンパイル)
3. Eclipseの導入
英語より日本語のEclipseの方が使いやすいと思うのでPleiades All in Oneをダウンロードしましょう。バージョンは4.5以上である必要があります。種類がいくつかありますが、一番機能の少ないPlatformで十分です。間違ってもUltimateを使ってはいけません。重すぎます。Java 8をインストールしたPCならStandard Editionを、Java 8をインストールしたくないならFull Editionをダウンロードしてください。筆者のPCにはJava 7じゃないと動かないソフトが入っているためFull Editionを使いました。
ダウンロードはこちらから。http://mergedoc.osdn.jp/
解凍する時はフォルダ名が長くならないように気を付けてください。圧縮ファイルの名前が「pleiades-e4.5-platform-32bit-jre_20150624.zip」のように非常に長いので、圧縮ファイルの名前をそのままフォルダ名に使う解凍ツールだと、解凍した時に中のファイルが長さ制限に引っかかる可能性があります。その場合は圧縮ファイルの名前を「a.zip」とかにして解凍してみてください。また、解凍場所もデスクトップやマイドキュメントのような階層の深い場所は避けて、「D:\Rust\pleiades」のような場所に解凍すると良いでしょう。
4. RustDTの導入
まずEclipseを起動するとワークスペースの場所を聞かれます。これはプロジェクトを作成するフォルダのことです。デフォルトのままでも困らないと思うので、「この選択をデフォルトとして使用し、今後この質問を表示しない(U)」にチェックを入れておきましょう。
次にメニューの「ヘルプ(H)」→「新規ソフトウェアのインストール...」を開きます。
右上の「追加(A)...」を押して「ロケーション(L):」にRustDTの入手先「http://rustdt.github.io/releases/」を入力します。
「RustDT Project」にチェックを入れインストールします。
5. RustDTの設定
メニューの「ウィンドウ(W)」→「設定(P)」を開きます。
Rustフォルダへのパス、Rustソースフォルダへのパス、racer.exeへのパスを入力します。筆者の環境では上から「D:\Rust\Rust nightly 1.3」「D:\Rust\rustc-1.1.0-src\rustc-1.1.0\src」「D:\Rust\racer\target\release\racer.exe」でした。(コンパイラとソースのバージョンが合っていませんが…たぶん大丈夫…?)
6. プロジェクトの設定
ようこそ画面は閉じます。
プロジェクト・エクスプローラーで右クリックし、プロジェクトを作ります。
Rustパースペクティブを開くか聞かれるので「常にこの設定を使用する(R)」にチェックを入れてから開いてください。パースペクティブはEclipseのモードだと思ってください。EclipseでRustプログラミングをするためにはEclipseをRust開発モードに切り替える必要があります。それがRustパースペクティブです。さっきのチェックを入れることでRustプロジェクトを開くと自動的にRust開発モードになります。
プロジェクトが出来たらCargo.tomlを開いてください。
プロジェクト名や実行ファイルの名前がhello_worldになっているので修正します。必要なのは[package]のnameとversionだけなので、それ以外は消しておきます。
メニューの「実行(R)」→「実行構成(N)...」を開きます。
「Rust Application」を右クリックし、「新規(W)」を押します。
「名前(N):」と「プログラム・パス:」を入力します。名前は他のプロジェクトと重ならないようにプロジェクト名を含めておきます。プログラム・パスはtarget/debug/にある実行ファイルを選択します。
Rustのパスを通していない人はここでパスを入力する必要があります。環境を開いて「新規(E)...」をクリックします。
「名前(N):」に「PATH」と入力し、「値(V):」にRustのbinフォルダのパスを書きます。
これで実行できるようになりました。
7. デバッガの設定
ブレークポイントデバッグにはgdbが必要になります。これはRustに含まれるgccに合わせる必要があります。
筆者が調べたところ、Rust stable 1.1とRust nightly 1.3で使われるgccに違いは無く、32bitか64bitかで違いがありました。どちらも同じMinGW-w64製で、32bit版がMinGW 4.9.1 win32 dwarf、64bit版がMinGW 4.9.1 win32 sehです。
MinGW-w64製のMinGWの入手方法は以前書いたこちらの記事を参考にしてください。
(2015年)最新のMinGW(GCC)のダウンロード
MinGWの導入が終わったら、Eclipseから使えるようにします。まず、メニューの「ウィンドウ(W)」→「設定(P)」を開きます。
「C/C++」→「デバッグ」→「GDB」と開き、「GDB デバッガー:」のところで、先ほど導入したMinGWのgdb.exeを選択します。筆者の環境では「D:\MinGW\i686-4.9.1-release-win32-dwarf-rt_v3-rev3\mingw32\bin\gdb.exe」でした。ついでにすぐ下にある「始動で停止:」のチェックを外します。このチェックを外さないと毎回main関数で止まります。
これでデバッグ出来るようになったはずです。
8. リリースビルドの設定
target/debug/にある実行ファイルはデバッグ用なので配布には向いていません。また、Rustでコンパイルした実行ファイルは実行するのにコンパイラのDLLが必要になる可能性があります。DLLは実行ファイルに埋め込んだ方が配布が楽だと思うので、リリース向きのやり方を紹介します。
(NightlyバージョンだとLink argsを使った方が楽ですが、今回はStableバージョン(1.1以降)で使える方法を使います。)
まず、メニューの「プロジェクト(P)」→「プロパティー(P)」を開きます。
「ビルダー」を開き、「新規(N)...」を開きます。
「プログラム」を選択し、「OK」を押します。
「名前(N):」にはリリースビルドだと分かる名前を、「ロケーション(L):」にはRustのbinフォルダに入っているcargo.exeのパスを入力します。「作業ディレクトリー(D):」は「ワークスペースの参照(K)...」を押してプロジェクトフォルダを選択します。「引数(A):」には「rustc --release -- -C link-args=-static」と入力します。この引数はリリースビルドかつDLL不要のオプションになります。
「ビルド・オプション(B)」を開き、「ビルダーの実行:」のところの「手動ビルド中(D)」以外のチェックを外します。これで手動ビルドの時だけリリースビルドが行われます。
ただし、手動で実行/デバッグした場合も手動ビルドと見なされます。これでは開発の時に邪魔になるのでリリースビルドを使わない時は下のようにチェックを外しておきます。
リリースビルドは実行/デバッグでも行われますが、あえてビルドだけ行いたいならメニューの「プロジェクト(P)」→「プロジェクトのビルド(B)」で出来ます。ちなみに「すべてビルド(A)」は複数のプロジェクトを同時に開いている時に使います。
もし、リリースビルドを行ったのにtarget/releaseフォルダが無ければまずプロジェクト右クリックして「リフレッシュ(F)」してみましょう。
9. おしまい
これでRust開発環境は整ったはずです。Rustプログラミングを存分に楽しんでください。