Rust conditionally build

정명진·2023년 5월 11일
0

키패드를 만들면서 운영환경에서 콘솔 로그가 찍히지 않게 해야하는 상황이 발생했다.

이를 어떻게 해결할 수 있을까 찾다가 cfg 매크로에 대해 알게되었다.

해당 매크로를 사용하면 특정 조건을 만족할때만 해당 method나 mod를 사용할 수 있게 해준다.

pub mod test {
    #[cfg(feature = "${name}")]
    #[macro_export]
    macro_rules! foo {
 		do something
    }

    #[cfg(not(feature="${name}"))]
    #[macro_export]
    macro_rules! foo {
		do something
    }
}

즉 foo 라는 메서드가 있을때 build시 feature값을 어떻게 주냐에 따라 동작을 달리 할 수 있게 만들 수 있다.

wasm-pack build --release --features ${name}

"#[cfg(feature = "${name}")]" 인 foo marcro가 compile 된다.

wasm-pack build --release

처럼 feature 옵션을 주지 않거나 이름이 다르다면 "#[cfg(not(feature="${name}"))]"
인 foo 메서드가 실행이 된다!

파일들 npm lib로 옮기고

npm run build
# 그리고 시작
npm start
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글