Cargo¶
- 目次
- Cargo
Rust言語の標準ビルドツールで、ビルドとパッケージ管理を行います。
ソースコードからのビルド、依存ライブラリのダウンロードとビルド、リンクなどを行います。
パッケージ¶
他のプログラミング言語におけるプロジェクトと似た概念です。
パッケージには、クレートと呼ぶコンパイル(翻訳単位)が1つ以上含まれます。
クレートには実行ファイルを生成するバイナリクレートと、ライブラリファイルを生成するライブラリクレートの2種類があります。
パッケージは最低1つのクレートを保持しています。バイナリクレートについては、複数のクレートを保持することができます。
ライブラリクレートについては、0または1つのクレートを保持することができます。
パッケージの定義¶
パッケージディレクトリに置かれた Cargo.toml ファイルにパッケージ定義を記述します。
雛形のパッケージ定義¶
cargo new
コマンドで生成した雛形のパッケージ定義です。
[package]
name = "hello"
version = "0.1.0"
edition = "2021"
[dependencies]
[package]
セクションに、パッケージ名、パッケージバージョン、Rustのエディションを定義しています。- パッケージ名は、ライブラリクレートがあればその生成するターゲット名になります。
- バイナリクレートがある場合、src/main.rsのバイナリクレートのターゲット名になります。
[dependencies]
セクションに依存するライブラリがあれば記述します。
操作方法¶
パッケージの作成¶
cargo newコマンドでパッケージを生成します。
D:\work> cargo new hello Created binary (application) `hello` package D:\work> cd hello D:\work\hello>
デフォルトでは実行可能バイナリファイルを作成するパッケージを生成。次のファイルが生成されます。
hello\ ├ .gitignore ├ Cargo.toml └─src\ └ main.rs
ライブラリクレートを持つパッケージの生成¶
cargo new <パッケージ名> --lib でライブラリクレートを持つパッケージを生成します。
hello_lib\ ├ .gitignore ├ Cargo.toml └─src\ └ lib.rs
複数のバイナリクレートを持つパッケージの生成¶
Cargo.tomlに定義を記述する方法と、src/binディレクトリの下に main関数を持つソースファイルを作成する方法があります。
以下は、binディレクトリの下に、main関数を持つ afla.rs と bravo.rs を配置した例です。ソースファイル名と同じバイナリクレート名を持つ alfaクレート、bravoクレートとなります。
hello\ ├ .gitignore ├ Cargo.toml └─src\ └ main.rs └─bin\ ├ alfa.rs └ bravo.rs
ビルド¶
cargo buildコマンドでパッケージをビルドします。
D:\work\hello> cargo build Compiling hello_cargo v0.1.0 (D:\work\hello) Finished dev [unoptimized + debuginfo] target(s) in 1.18s
デフォルトでは、デバッグビルドされます。
target +- debug +- hello
最適化ビルド¶
最適化ビルド(リリースビルド)は、cargo build --release
を実行します。
実行¶
cargo runコマンドでパッケージのバイナリクレートから生成した実行可能ファイルを実行します。
D:\work\hello> cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.02s Running `target\debug\hello.exe` Hello, world!
複数バイナリクレートの場合¶
cargo run --bin ターゲット名 でターゲット名を指定して実行します。