[Rust]Cargoを使ったコンパイル&実行

Cargo?

前回はrustcコンパイルを行ったが今回はcargoコンパイルを行う。
cargoはRustのビルドシステムとパッケージ管理をするためのもので、規模が大きめのプロジェクトに対してはこちらを使うと管理がしやすくなるらしい。
今回もチュートリアルにそってやる。

プロジェクトの作成

とりあえずプロジェクトの作成。

> cargo new hello_cargo

これでhello_cargoというフォルダと中にいくつかのファイルやフォルダが作成される。

cargoで作成したプロジェクトはデフォルトでgitによってバージョン管理ができるようになっている。
オプションにvcsをつけることでgit以外にもhg、pijul、fossil、noneを選ぶことができる。noneを選択するとバージョン管理は行われない。

> cargo new --vcs=none  hello_cargo

Cargo.tomlのpackageにはコンパイルに必要な情報が書かれている。
情報を修正したい場合はここを編集する。
dependenciesにはプロジェクトの依存パッケージの情報を書く。
今回は前回のハローワールドのコードそのままなので依存パッケージはない。

Cargo.lockはビルド時などに自動で作成されるものなので自分で編集することはしなくていい。

src/main.rsには前回のハローワールドのコードが書かれている。

ビルド

cargoコマンドを使いビルドを行う。

> cargo build
Compiling hello_cargo v0.1.0 (C:\xxx\xxx)
Finished dev [unoptimized + debuginfo] target(s) in 0.05s

うまくいっていればFinishedという出力がされる。
実行ファイルはtarget/debug/hello_cargo.exeにある。
実行するとハローワールドが出力される。

> .\target\debug\hello_cargo.exe
Hello, world!

ちなみにコードに変更がない場合にビルドを行ってもコンパイルはされない。
変更箇所がある場合のみコンパイルがされる。

リリース用ビルドを行うときはreleaseオプションをつける必要がある。

> cargo build --release
Compiling hello_cargo v0.1.0 (C:\)
Finished release [optimized] target(s) in 0.47s

実行ファイルはtarget/release/hello_cargo.exeにある。

コンパイルが通るかの確認だけしたい場合のコマンドもある。

> cargo check
Checking hello_cargo v0.1.0 (C:\)
Finished dev [unoptimized + debuginfo] target(s) in 0.13s

実行ファイルが生成されないため高速に行うことができる。

ビルド&実行

ビルドと実行を同時に行うためのコマンドもある。

> cargo run
   Compiling hello_cargo v0.1.0 (C:\)
    Finished dev [unoptimized + debuginfo] target(s) in 0.48s
     Running `target\debug\hello_cargo.exe`
Hello, world!!

デバックする際の実行はこっちを多用することになりそう。
いちいちコンパイルと実行を別々にやってたら面倒だしね。