๋น๋ ๊ท์น
Rust ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก cargo
๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋ฉ๋๋ค. Chromium์ ํจ์จ์ฑ์ ์ํด gn
๋ฐ ninja
๋ก ๋น๋๋ฉ๋๋ค. ์ ์ ๊ท์น์ ์ต๋ ๋์ ๋ก๋๋ฅผ ํ์ฉํฉ๋๋ค. Rust๋ ์์ธ๋ ์๋๋๋ค.
Chromium์ Rust ์ฝ๋ ์ถ๊ฐ
์ผ๋ถ ๊ธฐ์กด Chromium BUILD.gn
ํ์ผ์์ rust_static_library
๋ฅผ ์ ์ธํฉ๋๋ค.
import("//build/rust/rust_static_library.gni")
rust_static_library("my_rust_lib") {
crate_root = "lib.rs"
sources = [ "lib.rs" ]
}
๋ค๋ฅธ Rust ํ๊ฒ์๋ deps
๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋์ค์ ์๋ ํํฐ ์ฝ๋์ ์์กดํ๊ธฐ ์ํด ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํฌ๋ ์ดํธ ๋ฃจํธ ๋ฐ ์์ค ์ ์ฒด ๋ชฉ๋ก _๋ ๋ค_๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. crate_root
๋ ์ปดํ์ผ ๋จ์์ ๋ฃจํธ ํ์ผ(์ผ๋ฐ์ ์ผ๋ก lib.rs
)์ ๋ํ๋ด๋ Rust ์ปดํ์ผ๋ฌ์ ์ ๊ณต๋๋ ํ์ผ์
๋๋ค. sources
๋ ์ฌ๋น๋๊ฐ ํ์ํ ์์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ninja
์ ํ์ํ ๋ชจ๋ ์์ค ํ์ผ์ ์ ์ฒด ๋ชฉ๋ก์
๋๋ค.
(Rust์์๋ ํฌ๋ ์ดํธ ์ ์ฒด๊ฐ ์ปดํ์ผ ๋จ์์ด๋ฏ๋ก Rust source_set
์ ๊ฐ์ ๊ฒ์ ์์ต๋๋ค. static_library
๊ฐ ์ต์ ๋จ์์
๋๋ค.)
ํ์๋ค์ gn์ ๋ด์ฅ Rust ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ์ฌ์ฉํ๋ ๋์ gn ํ ํ๋ฆฟ์ด ํ์ํ ์ด์ ๋ฅผ ๊ถ๊ธํดํ ์ ์์ต๋๋ค. ๋๋ต์ ์ด ํ ํ๋ฆฟ์ด CXX ์ํธ ์ด์ฉ์ฑ, Rust ๊ธฐ๋ฅ, ๋จ์ ํ ์คํธ๋ฅผ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์ค ์ผ๋ถ๋ ๋์ค์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.