Cargo: κΈ°λ³Έ `--target`을 μ„€μ •ν•˜λŠ” 방법 μΆ”κ°€

에 λ§Œλ“  2016λ…„ 01μ›” 30일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: rust-lang/cargo

예λ₯Ό λ“€μ–΄ ν”„λ‘œμ νŠΈμ˜ 경우 항상 cargo build --target=thumbv6m-none-eabi μ‚¬μš©ν•˜μ—¬ 크둜슀 μ»΄νŒŒμΌν•©λ‹ˆλ‹€. 이 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ ν™”λ¬Ό ꡬ성 νŒŒμΌμ— ν‚€ κ°’ μŒμ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# .cargo/config
[target]
default = "thumbv6m-none-eabi"

그러면 cargo build λ₯Ό ν˜ΈμΆœν•˜μ—¬ thumbv6m-none-eabi λŒ€ν•œ ν”„λ‘œμ νŠΈλ₯Ό 크둜슀 μ»΄νŒŒμΌν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 cargo doc κΉŒμ§€ ν™•μž₯λ©λ‹ˆλ‹€.

μ›λž˜ 여기에 보고

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것은 λ‚˜μ—κ²Œ κ½€ ν•©λ¦¬μ μœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 비둝 그것이 Cargo.toml에 μžˆμ–΄μ•Ό ν•œλ‹€κ³  말할 수 μžˆμ§€λ§Œ ν”„λ‘œμ νŠΈλ³„λ‘œ μ‹œμž‘ν•΄μ•Ό ν•˜λŠ” _if_ 일 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

이것은 λ‚˜μ—κ²Œ κ½€ ν•©λ¦¬μ μœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 비둝 그것이 Cargo.toml에 μžˆμ–΄μ•Ό ν•œλ‹€κ³  말할 수 μžˆμ§€λ§Œ ν”„λ‘œμ νŠΈλ³„λ‘œ μ‹œμž‘ν•΄μ•Ό ν•˜λŠ” _if_ 일 κ²ƒμž…λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ„€μ •μ˜ ν•œ 가지 단점(?)은 쒅속성에 λŒ€ν•΄ 섀정이 항상 λ¬΄μ‹œλœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 예: λ‚΄ ν”„λ‘œμ νŠΈ Pκ°€ μƒμž D에 μ˜μ‘΄ν•˜κ³  Dκ°€ Tλ₯Ό κΈ°λ³Έ λŒ€μƒμœΌλ‘œ μ„€μ •ν–ˆλ‹€λ©΄ DλŠ” 항상 λ‚΄κ°€ P에 λŒ€ν•΄ μ„ νƒν•œ λŒ€μƒμ— λŒ€ν•΄ 컴파일되기 λ•Œλ¬Έμ— ν•΄λ‹Ή 섀정은 _항상_ λ¬΄μ‹œλ©λ‹ˆλ‹€.

.cargo/configλ₯Ό μ‚¬μš©ν•˜λŠ” ν•œ 가지 μž₯점은 λ‘œμ»¬μ—μ„œ μ—¬λŸ¬ μƒμžλ₯Ό κ°œλ°œν•˜λŠ” 경우 λ‹€μŒκ³Ό 같이 μ„€μ •ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

$ tree .
my-RTOS-project
β”œβ”€β”€ .cargo
β”‚Β Β  └── config
β”œβ”€β”€ allocator
β”‚Β Β  └── (...)
β”œβ”€β”€ hal
β”‚Β Β  └── (...)
β”œβ”€β”€ RusTOS
β”‚   └── (...)
└── scheduler
    └── (...)

그리고 ν•œ 크레이트 λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€λ₯Έ λ””λ ‰ν† λ¦¬λ‘œ μ ν”„ν•˜μ—¬ cargo test μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λŠ μ‹œμ μ—μ„œ .cargo/configμ—μ„œ ν•œ 쀄을 νŽΈμ§‘ν•˜κ³  λ‹€λ₯Έ λŒ€μƒμ— λŒ€ν•œ μƒμž ν…ŒμŠ€νŠΈλ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„ν•˜ κ·Έλ ‡μŠ΅λ‹ˆλ‹€! μ΄λŠ” λ‹€μ†Œ https://github.com/rust-lang/cargo/issues/2122 의 λ²”μœ„μ— μ†ν•˜λ©°, 단점이 _μ—†μ–΄μ•Ό ν•˜λŠ”_ ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν•΄μ•Ό ν•  λ””μžμΈ μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰