2014-12-24 2 views
12

잠시 Google 검색 후 화물을 사용하여 cfg을 사용하여 조건부로 내 소스 코드를 컴파일하려는 경우 해결 방법은 cargo --features 인 것으로 보입니다.`cfg`와 Cargo에서 조건부 컴파일을 어떻게 사용합니까?

http://doc.crates.io/manifest.html

나는 몇

#[cfg(feature = "foo")] 
소스 코드에서

cargo build --features foo 

를 추가했지만, 그것은

Package `xxx v0.0.1 (file:///C:/yyy/xxx)` does not have these features: `foo` 

가 어떻게화물 식별 할 수 있다고 그만큼 기능? Cargo.toml에 뭔가를 추가해야합니까?

C:\>rustc --version 
rustc 0.13.0-nightly (42deaa5e4 2014-12-16 17:51:23 +0000) 

C:\>cargo --version 
cargo 0.0.1-pre-nightly (5af754d 2014-12-18 01:50:48 +0000) 

답변

13

당신은 당신의 Cargo.toml의 기존 기능을 소개하고 있습니다

여기 내가 사용하고 rustccargo의 버전입니다.

Cargo.toml에서
  • 하는 features 섹션을 만들어 특정 기능 이름 소개 : 당신이 당신의 기능을 원하는 경우

    [features] 
    
    customfeature = [] # feature has no explicit dependencies 
    

    나는 조건부로 다음을 수행하여 컴파일 할 수 있었다 특정 종속성 검사 . 코드에서

  • 2 & 3 괜찮을 것 같다 당신의 단계부터 #[cfg(feature="customfeature")]

  • 실행 cargo build --features customfeature

를 사용, 아마 당신의 Cargo.toml에 문제가있을 수 있어야합니다.

+0

"if"에서 기능을 테스트 할 수 있습니까? 감사. –

+0

@BulatM. 그렇습니다. if cfg! (feature = "customfeature") {...}' – Pauan

관련 문제