Cargo とは
Cargo はRustのビルドシステムおよびパッケージマネージャです。Cargoは、コードの構築、コードが依存するライブラリのダウンロード、それらのライブラリの構築など、多くのタスクをユーザーに代わって処理します。
.NET でいうところの nuget や Javascript でいうところの npm みたいなパッケージ管理機能 + ビルド時のもろもろの便利機能を提供してくれます。
Cargo を使うことで、直接 rustc を使ってコンパイルして、ビルドしたプログラムを実行して動作を確認してという手間も省けます。
以下、Cargo を使ってプロジェクトを作成し、実行したりする方法をまとめます。
詳しく知りたい場合は以下のページに詳しくあります。詳しく知りたい場合は
Cargo インストールの確認
$ cargo --version
cargo 1.32.0 (8610973aa 2019-01-02)
Cargo は Rust コンパイラをインストールするときに一緒にインストールされているはずです。バージョンを確認しておきます。
Cargo プロジェクトを作成する
適当な作業ディレクトリで、次のコマンドを使ってプロジェクトを作成します。
$ cargo new my-project
Created binary (application) `my-project` package
$ cd .\my-project\
プロジェクトのディレクトリが作られ、もろもろのファイルが生成されています。内容はこんな感じです。
Cargo.toml にこのプロジェクト(パッケージ)に関する情報が記述されます。名前やバージョン、管理者の情報などです。
外部ライブラリを使う場合は依存関係などもここにまとめて管理され、別環境でもすぐに開発環境を再現できるようになります。npm でいうところの package.json と同じようなものです。
Rust用の .gitignore も生成され、src以下にはエントリポイントとなる main.rs も生成されています。
“Hello world” のプログラムがすでに記述されているので動かしてみます。
Cargo をつかってビルド
$ cargo build
Cargo のビルドは src/main.rs がエントリポイントとなり実行され target/debug以下に実行ファイルが生成されます。--release
を付けると製品版ビルドを実行できます。
debug ビルドの実行ファイルを実行するには以下のコマンドです。(windowsの場合)
$ .\target\debug\hello_cargo.exe
プロジェクトのディレクトリ構成
このページを見てみると、プロジェクトのディレクトリは以下のようにするのが良いとあります。
▾ src/ # directory containing source files
lib.rs # the main entry point for libraries and packages
main.rs # the main entry point for packages producing executables
▾ bin/ # (optional) directory containing additional executables
*.rs
▾ */ # (optional) directories containing multi-file executables
main.rs
▾ examples/ # (optional) examples
*.rs
▾ */ # (optional) directories containing multi-file examples
main.rs
▾ tests/ # (optional) integration tests
*.rs
▾ */ # (optional) directories containing multi-file tests
main.rs
▾ benches/ # (optional) benchmarks
*.rs
▾ */ # (optional) directories containing multi-file benchmarks
main.rs
いきなり深く考える必要はないと思いますが、src/main.rsがエントリポイントで、ビルドされた実行ファイルは target/debug 以下に生成されるというのを覚えておきましょう。
Cargo を使ってすぐに実行する
いちいちビルドして実行ファイルを作成 -> 実行とコマンドを実行するのは面倒ですが、run
コマンドが用意されておりこれを実行すると、いきなりプログラムの実行までしてくれます。
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target\debug\my-project.exe`
Hello, world!
プログラムが実行され、”Hello, world!” が出力されていることが確認できます。
Cargo を使ってチェック
$cargo check
check
コマンドでビルドを実行せずにビルド可能なコードかどうかチェックできます。ビルド自体はされないので高速にチェックが可能です。
以上。
コメントを書く