Cargo: κΈ°λŠ₯이 ν™œμ„±ν™”λ˜μ§€ *μ•Šμ€* 경우 선택적 쒅속성.

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

일뢀 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ„±λŠ₯ μ €ν•˜(예: NonZero μ‚¬μš©ν•˜μ§€ μ•ŠμŒ) λ˜λŠ” μ œν•œλœ κΈ°λŠ₯(일뢀 API λΉ„ν™œμ„±ν™”)으둜 μ•ˆμ •μ μΈ Rustμ—μ„œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ 방식은 unstable λ˜λŠ” nightly Cargo κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ λΆˆμ•ˆμ •ν•œ Rust κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμ„ λ•Œ μ‚¬μš©ν•˜λ„λ‘ 선택할 수 μžˆλ„λ‘ ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

아직 μ•ˆμ •μ μ΄μ§€ μ•Šμ€ std::rc::Weak λŒ€ν•œ ν•΄κ²° λ°©λ²•μœΌλ‘œ rust-rc λ₯Ό κ²Œμ‹œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬λ‘œμ„œλŠ” 이 크레이트λ₯Ό 기본적으둜 μ’…μ†μ„±μœΌλ‘œ κ°€μ§€λŠ” 방법이 μ—†λŠ” 것 κ°™μ§€λ§Œ unstable κΈ°λŠ₯이 ν™œμ„±ν™”λ˜λ©΄ _μ•„λ‹™λ‹ˆλ‹€_. 이것을 화물에 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

기본값을 되돌리고 stable κΈ°λŠ₯을 κ°–λŠ” 것은 λΆˆμ•ˆμ •ν•œ Rustμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆκ±°λ‚˜ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ’…μ†μ„±μœΌλ‘œ 문제λ₯Ό μ΄λ™μ‹œν‚΅λ‹ˆλ‹€.

A-features

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

[target.'cfg(...)'.dependencies] ꡬ문을 μ‚¬μš©ν•˜λ©΄ cfg(feature = "...") κ°€ Rust μ½”λ“œμ—μ„œμ™€ 같이 λ™μž‘ν•˜λ„λ‘ ν—ˆμš©ν•¨μœΌλ‘œμ¨ κ°„λ‹¨νžˆ 지원할 수 μžˆμŠ΅λ‹ˆλ‹€.

[target.'cfg(not(feature = "std"))'.dependencies]
hashmap_core = "0.1.2"

ν˜„μž¬ μ΄λŸ¬ν•œ μ„Ήμ…˜μ€ κΈ°λŠ₯ μƒνƒœμ— 상관없이 ν™œμ„±ν™”λœ κ²ƒμœΌλ‘œ μ·¨κΈ‰λ˜λ©° μ†”μ§νžˆ λ‚˜μ—κ²Œ λ²„κ·Έμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

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

이것도 κ°–κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. midir μ—λŠ” μ—¬λŸ¬ λ°±μ—”λ“œ(Linux의 경우 ALSA 및/λ˜λŠ” JACK, OSX의 경우 CoreMIDI 및/λ˜λŠ” JACK, Windows의 경우 WinMM)κ°€ 있으며, 제 κ³„νšμ€ JACK을 ν™œμ„±ν™”ν•˜κ³  λΉ„ν™œμ„±ν™”ν•˜λŠ” jack κΈ°λŠ₯ ν”Œλž˜κ·Έλ₯Ό κ°–λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‹€λ₯Έ (λ„€μ΄ν‹°λΈŒ) ν•˜λ‚˜. λ˜ν•œ JACK용으둜 μ»΄νŒŒμΌν•˜λŠ” 경우 ALSA/CoreMIDI에 λŒ€ν•œ 쒅속성을 μ œκ±°ν•˜μ—¬ μ‹œμŠ€ν…œμ— ALSAκ°€ μ„€μΉ˜λ˜μ§€ μ•Šμ€ κ²½μš°μ—λ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ‚΄ 첫 번째 μ•„μ΄λ””μ–΄λŠ” μœ„μ—μ„œ μš”μ²­ν•œ 것, 즉 jack κΈ°λŠ₯이 μ„ νƒλ˜λ©΄ alsa-sys 쒅속성을 λ‹¨μˆœνžˆ λΉ„ν™œμ„±ν™”ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

이에 λŒ€ν•œ λŒ€μ•ˆμ€ jack κ°€ ν™œμ„±ν™”λœ 경우 λΉ„ν™œμ„±ν™”λ  수 μžˆλŠ” κΈ°λ³Έ κΈ°λŠ₯(예: native )을 κ°–κ³  이 κΈ°λŠ₯에 λŒ€ν•œ ν”Œλž«νΌλ³„ 쒅속성을 κ°–λŠ” 것 alsa-sys 같은 것을 μ‚¬μš©ν•˜μ—¬ OSX에 λ¦¬λˆ…μŠ€μ™€ CoreMIDI에), [target.x86_64-unknown-linux-gnu.features] . λ˜ν•œ ν˜„μž¬λ‘œμ„œλŠ” 문제λ₯Ό ν•΄κ²°ν•  λŒ€μƒ ν”Œλž«νΌλ³„ κΈ°λ³Έ κΈ°λŠ₯ μ„ΈνŠΈλ₯Ό κ°–λŠ” 것이 λΆˆκ°€λŠ₯ν•œ κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ 쒅속 μƒμžμ—μ„œ ν”Œλž«νΌ 쒅속 쒅속성/κΈ°λŠ₯을 μ •μ˜ν•˜μ§€ μ•Šκ³  μž‘λ™ν•˜λŠ” ν•΄κ²° 방법을 찾을 수 μ—†μ—ˆμ§€λ§Œ κ°„κ³Όν–ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

[target.'cfg(...)'.dependencies] ꡬ문을 μ‚¬μš©ν•˜λ©΄ cfg(feature = "...") κ°€ Rust μ½”λ“œμ—μ„œμ™€ 같이 λ™μž‘ν•˜λ„λ‘ ν—ˆμš©ν•¨μœΌλ‘œμ¨ κ°„λ‹¨νžˆ 지원할 수 μžˆμŠ΅λ‹ˆλ‹€.

[target.'cfg(not(feature = "std"))'.dependencies]
hashmap_core = "0.1.2"

ν˜„μž¬ μ΄λŸ¬ν•œ μ„Ήμ…˜μ€ κΈ°λŠ₯ μƒνƒœμ— 상관없이 ν™œμ„±ν™”λœ κ²ƒμœΌλ‘œ μ·¨κΈ‰λ˜λ©° μ†”μ§νžˆ λ‚˜μ—κ²Œ λ²„κ·Έμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

저와 같은 경우:

[target.'cfg(not(feature = "std"))'.dependencies]
heapless = "0.2.7"

[features]
default = ["std"]
std = []

std 이 ν™œμ„±ν™”λ˜μ§€ μ•Šμ€ κ²½μš°μ—λ§Œ heapless 쒅속성을 μ›ν•©λ‹ˆλ‹€.
heapless λŠ” nightlyμ—μ„œλ§Œ μž‘λ™ν•˜μ§€λ§Œ std κ°€ ν™œμ„±ν™”λœ 경우 λ‚΄ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ stableκ³Ό ν˜Έν™˜λ˜κΈ°λ₯Ό μ›ν•©λ‹ˆλ‹€.

ν˜„μž¬ λ™μž‘μ΄ λ²„κ·Έμž…λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ μ˜λ„λœ κ²ƒμž…λ‹ˆκΉŒ?

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