tgoop.com/rust_code/1032
Create:
Last Update:
Last Update:
Π€Π°ΠΉΠ» build.rs ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ C-ΠΊΠΎΠ΄Π° Π΄Π»Ρ Rust.
ΠΡΠΈΠΌΠ΅Ρ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΠ°ΡΡ C-ΠΎΠ±ΡΡΡΠΊΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ C SDK ΠΏΡΡΠΌΠΎ ΡΠ΅ΡΠ΅Π· Cargo π¦
π Π§ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ?
- ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ C-ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡΡΡΠΊΠΈ ΠΏΡΡΠΌΠΎ ΠΈΠ· Rust-ΠΏΡΠΎΠ΅ΠΊΡΠ°
- ΠΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ C SDK ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ
ΠΊ Rust
- Π§Π΅ΡΠ΅Π· println!
ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Cargo ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ)
/// build.rs
fn main() {
// ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ C-wrapper
cc::Build::new()
.file("src/rplidarx_wrapper.c")
.include("/usr/local/include")
.include("/usr/local/include/src")
.include("/usr/local/include/core")
.compile("rplidarx_wrapper");
// ΠΠΈΠ½ΠΊΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠΊΡ
println!("cargo:rustc-link-lib=static=rplidarx_wrapper");
// ΠΠΈΠ½ΠΊΡΠ΅ΠΌ SDK ΡΡΡΡΠΎΠΉΡΡΠ²Π°
println!("cargo:rustc-link-lib=rplidarx_sdk");
println!("cargo:rustc-link-lib=pthread");
println!("cargo:rustc-link-lib=stdc++");
// ΠΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ (Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½)
println!("cargo:rustc-link-search=native=/usr/local/lib");
// ΠΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ C-ΡΠ°ΠΉΠ»Π°
println!("cargo:rerun-if-changed=src/rplidarx_wrapper.c");
}
π ΠΡΠΈ
println!
β ΡΠΊΡΡΡΡΠ΅ build-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Cargo. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Makefile Π½Π΅ Π½ΡΠΆΠ΅Π½: Π²ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΎΠΉ C ΠΈ Rust Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΠΌΠΎ Π² build.rs.
@rust_code
#junior #rust