Cargoとは
- Rustのビルドシステムであり、パッケージマネージャです。
- コードのビルドやコードが依存しているライブラリのダウンロードや、それらのライブラリのビルドを行ってくれます。
Cargoは、rustの公式のインストーラを使用していれば、勝手にインストールされます。
❯ cargo --version
cargo 1.48.0
cargoでプロジェクトを作成してみる
- まずはじめに、hello_cargoという名前の新しいバイナリの実行可能ファイルを作成します。
- cargo newに渡した**--bin**引数で、バイナリを作成します。
❯ cargo new hello_cargo --bin
Created binary (application) `hello_cargo` package
- hello_cargoディレクトリにいき、中を見てみると2つのファイルと1つのディレクトリを確認できます。
- Cargo.tomlファイルと、中にmain.rsファイルがあるsrcディレクトリです。
- また、 .gitignoreファイルと共に、新しいGitリポジトリも初期化されています。
❯ cd hello_cargo
❯ tree .
.
├── Cargo.toml
└── src
└── main.rs
1 directory, 2 files
- Cargo.tomlを見てみる。
[下記は、cargo newで生成されるもの]
-
Cargo.tomlはCargoの設定フォーマットです。
-
[package]は、後の文がパッケージを設定していることを示すセクションヘッダーです。
-
[package]の後に3行あるもの(name,version,authors)は、Cargoがプログラムをコンパイルするのに必要な設定情報です。
-
[dependencies]は、プロジェクトの依存を列挙するためのセクションを示しています。
Cargo.toml
[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["yo-koitabashi <XXXX@XXX.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
src/main.rsを変更し、ビルド実行してみる
- Cargoは、ソースファイルがsrcディレクトリにあることを期待します。
- 今回は、下記のコードでビルドしてみようと思います。
src/main.rs
fn main() {
println!("Hello, world!");
}
ビルド
- ビルドの実行は下記のコマンドを実行できます。
[cargo buildコマンドで作成されるもの]
- カレントディレクトリではなく、target/debug/hello_cargoに実行可能ファイルを作成します。
- 最上位に新しいファイルCargo.lockを作成します。このファイルは、自分のプロジェクトの依存の正確なバージョンを追いかけます。
❯ cargo build
Compiling hello_cargo v0.1.0 (/Users/yoshitaka.koitabashi/Desktop/rust勉強用/rust-cargo1-3/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 5.41s
❯ ls -la
total 24
drwxr-xr-x 8 yoshitaka.koitabashi staff 256 3 2 23:28 .
drwxr-xr-x 3 yoshitaka.koitabashi staff 96 3 2 23:10 ..
drwxr-xr-x 10 yoshitaka.koitabashi staff 320 3 2 23:28 .git
-rw-r--r-- 1 yoshitaka.koitabashi staff 8 3 2 23:10 .gitignore
-rw-r--r-- 1 yoshitaka.koitabashi staff 142 3 2 23:28 Cargo.lock
-rw-r--r-- 1 yoshitaka.koitabashi staff 233 3 2 23:10 Cargo.toml
drwxr-xr-x 3 yoshitaka.koitabashi staff 96 3 2 23:10 src
drwxr-xr-x@ 5 yoshitaka.koitabashi staff 160 3 2 23:28 target
- 下記のコマンドで実行可能ファイルを実行できます。
❯ ./target/debug/hello_cargo
Hello, world!
コードをコンパイルし実行する方法
- cargo runコマンドを使用すると、コードをコンパイルし、吐かれた実行可能ファイルを1コマンドで実行することができます。
❯ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/hello_cargo`
Hello, world!
コンパイルできることを確かめる方法
- cargo checkコマンドを使用すると、実行可能ファイルは生成せず、コードを確認しコンパイルできることを確かめます。
❯ cargo check
Checking hello_cargo v0.1.0 (/Users/yoshitaka.koitabashi/Desktop/rust勉強用/rust-cargo1-3/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
リリースビルドを行う方法
- cargo build --releaseコマンドを使用すると、最適化を行なってコンパイルすることができます。
- このコマンドは、target/debugではなく、 target/releaseに実行可能ファイルを作成します。