Ce face cargo build
cargo build descarcă dependențele din Cargo.toml (dacă este nevoie), le compilează și apoi compilează proiectul. Rezultatul se pune în target/debug/. A doua oară, Cargo recompilează doar ce s-a schimbat.
Implicit se folosește profilul dev: compilare rapidă, fără optimizări, cu informații de depanare și cu verificarea depășirilor la operațiile cu întregi. Pentru programul final folosești --release: compilarea durează mai mult, dar programul poate fi de zeci de ori mai rapid; rezultatul este în target/release/.
Dacă există erori, Cargo afișează mesajele compilatorului și nu produce executabilul. Pentru o verificare mai rapidă, fără executabil, folosește cargo check; ca să compilezi și să rulezi într-un pas, cargo run.
Parametri
| Parametru | Descriere |
|---|---|
--release |
Compilează cu optimizări (profilul release). |
--bin nume |
Compilează doar executabilul cu acest nume. |
--target triplu |
Compilează pentru alt sistem (ținta trebuie instalată cu rustup target add). |
-j N |
Numărul de procese de compilare în paralel. |
Exemple
Exemplul 1: Debug și release
Prima compilare a durat 1,41 secunde; varianta release a fost pusă separat, în target/release. Executabilul se poate rula direct.
$ cargo build
$ cargo build --release
$ ls target
$ ./target/release/salut
Rezultat în terminal
Compiling salut v0.1.0 (/home/ana/proiecte/salut)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.41s
Compiling salut v0.1.0 (/home/ana/proiecte/salut)
Finished `release` profile [optimized] target(s) in 0.42s
CACHEDIR.TAG debug release
Hello, world!
Exemplul 2: Când codul are erori
Cargo afișează eroarea compilatorului (cu fișierul și linia) și se oprește. În target/ nu apare un executabil nou.
// src/main.rs
fn main() {
let varsta: u32 = "17";
println!("Vârsta: {varsta}");
}
$ cargo build
Rezultat în terminal
Compiling salut v0.1.0 (/home/ana/proiecte/salut)
error[E0308]: mismatched types
--> src/main.rs:2:23
|
2 | let varsta: u32 = "17";
| --- ^^^^ expected `u32`, found `&str`
| |
| expected due to this
For more information about this error, try `rustc --explain E0308`.
error: could not compile `salut` (bin "salut") due to 1 previous error
Greșeli frecvente
- Măsori viteza programului compilat fără
--release. Varianta debug poate fi de 10–50 de ori mai lentă; pentru măsurători și pentru livrare folosește mereu--release. - Te aștepți ca depășirea unui întreg să dea panică și în release. În profilul release verificarea este oprită și valoarea „se întoarce”; folosește
checked_adddacă depășirea contează. - Ștergi doar executabilul când vrei o compilare de la zero. Folosește
cargo clean, care șterge tot directorultarget/.
Comenzi înrudite
cargo run: Compilează proiectul dacă s-a schimbat ceva și pornește programul. Argumentele de după – sunt trimise programului.cargo check: Verifică dacă proiectul se compilează (tipuri, borrow checker) fără să producă executabilul. Este mult mai rapid decât cargo build.Cargo.toml: Fișierul de configurare al unui proiect Rust (în format TOML): numele și versiunea, ediția, dependențele, funcționalitățile și setările de compilare.rustup: Instalează și actualizează Rust: compilatorul, Cargo și componentele lor, în mai multe versiuni (stable, beta, nightly) și pentru mai multe sisteme.