しらいとブログ

ネットで検索してもなかなか出てこないIT情報を独自にまとめています

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なAPIstd::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)」にチェックを入れておきましょう。

スクリーンショット1

次にメニューの「ヘルプ(H)」→「新規ソフトウェアのインストール...」を開きます。

スクリーンショット2

スクリーンショット3

右上の「追加(A)...」を押して「ロケーション(L):」にRustDTの入手先「http://rustdt.github.io/releases/」を入力します。

スクリーンショット4

「RustDT Project」にチェックを入れインストールします。

スクリーンショット5

スクリーンショット6

スクリーンショット7

スクリーンショット8

5. RustDTの設定

メニューの「ウィンドウ(W)」→「設定(P)」を開きます。

スクリーンショット9

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」でした。(コンパイラとソースのバージョンが合っていませんが…たぶん大丈夫…?)

スクリーンショット10

6. プロジェクトの設定

ようこそ画面は閉じます。

スクリーンショット11

プロジェクト・エクスプローラーで右クリックし、プロジェクトを作ります。

スクリーンショット12

スクリーンショット13

スクリーンショット14

Rustパースペクティブを開くか聞かれるので「常にこの設定を使用する(R)」にチェックを入れてから開いてください。パースペクティブEclipseのモードだと思ってください。EclipseでRustプログラミングをするためにはEclipseをRust開発モードに切り替える必要があります。それがRustパースペクティブです。さっきのチェックを入れることでRustプロジェクトを開くと自動的にRust開発モードになります。

スクリーンショット15

プロジェクトが出来たらCargo.tomlを開いてください。

スクリーンショット16

プロジェクト名や実行ファイルの名前がhello_worldになっているので修正します。必要なのは[package]nameversionだけなので、それ以外は消しておきます。

スクリーンショット17

メニューの「実行(R)」→「実行構成(N)...」を開きます。

スクリーンショット18

「Rust Application」を右クリックし、「新規(W)」を押します。

スクリーンショット19

「名前(N):」と「プログラム・パス:」を入力します。名前は他のプロジェクトと重ならないようにプロジェクト名を含めておきます。プログラム・パスはtarget/debug/にある実行ファイルを選択します。

スクリーンショット20

Rustのパスを通していない人はここでパスを入力する必要があります。環境を開いて「新規(E)...」をクリックします。

スクリーンショット21

「名前(N):」に「PATH」と入力し、「値(V):」にRustのbinフォルダのパスを書きます。

スクリーンショット22

これで実行できるようになりました。

スクリーンショット23

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)」を開きます。

スクリーンショット24

C/C++」→「デバッグ」→「GDB」と開き、「GDB デバッガー:」のところで、先ほど導入したMinGWgdb.exeを選択します。筆者の環境では「D:\MinGW\i686-4.9.1-release-win32-dwarf-rt_v3-rev3\mingw32\bin\gdb.exe」でした。ついでにすぐ下にある「始動で停止:」のチェックを外します。このチェックを外さないと毎回main関数で止まります。

スクリーンショット25

これでデバッグ出来るようになったはずです。

スクリーンショット26

8. リリースビルドの設定

target/debug/にある実行ファイルはデバッグ用なので配布には向いていません。また、Rustでコンパイルした実行ファイルは実行するのにコンパイラのDLLが必要になる可能性があります。DLLは実行ファイルに埋め込んだ方が配布が楽だと思うので、リリース向きのやり方を紹介します。

(NightlyバージョンだとLink argsを使った方が楽ですが、今回はStableバージョン(1.1以降)で使える方法を使います。)

まず、メニューの「プロジェクト(P)」→「プロパティー(P)」を開きます。

スクリーンショット27

「ビルダー」を開き、「新規(N)...」を開きます。

スクリーンショット28

「プログラム」を選択し、「OK」を押します。

スクリーンショット29

「名前(N):」にはリリースビルドだと分かる名前を、「ロケーション(L):」にはRustのbinフォルダに入っているcargo.exeのパスを入力します。「作業ディレクトリー(D):」は「ワークスペースの参照(K)...」を押してプロジェクトフォルダを選択します。「引数(A):」には「rustc --release -- -C link-args=-static」と入力します。この引数はリリースビルドかつDLL不要のオプションになります。

スクリーンショット30

「ビルド・オプション(B)」を開き、「ビルダーの実行:」のところの「手動ビルド中(D)」以外のチェックを外します。これで手動ビルドの時だけリリースビルドが行われます。

スクリーンショット31

ただし、手動で実行/デバッグした場合も手動ビルドと見なされます。これでは開発の時に邪魔になるのでリリースビルドを使わない時は下のようにチェックを外しておきます。

スクリーンショット32

リリースビルドは実行/デバッグでも行われますが、あえてビルドだけ行いたいならメニューの「プロジェクト(P)」→「プロジェクトのビルド(B)」で出来ます。ちなみに「すべてビルド(A)」は複数のプロジェクトを同時に開いている時に使います。

スクリーンショット33

もし、リリースビルドを行ったのにtarget/releaseフォルダが無ければまずプロジェクト右クリックして「リフレッシュ(F)」してみましょう。

スクリーンショット34

9. おしまい

これでRust開発環境は整ったはずです。Rustプログラミングを存分に楽しんでください。