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