Rust 라이브러리에 실행 가능한 대상 추가하기

Cargo를 사용하면 new 명령으로 라이브러리 프로젝트를 쉽게 생성할 수 있습니다.

cargo new pumpkin-rs --lib


물론 라이브러리의 주요 목적은 다른 라이브러리나 응용 프로그램에서 사용하기 위해 내보낼 수 있는 일종의 기능을 캡슐화하는 것입니다.

이 게시물의 목적을 위해 라이브러리의 핵심이 될 간단한 함수를 src/lib.rs에 정의해 보겠습니다. 나중에 동일한 프로젝트의 실행 가능한 바이너리 대상에서 이 함수를 사용하는 방법을 살펴보겠습니다.

pub fn say_hello() {
    println!("Hello from the library");
}


모든 것이 성공적으로 빌드되었는지 다시 확인하기 위해 cargo build를 실행할 수 있습니다... 짜잔!

화물 대상



특정 상황에서는 라이브러리 프로젝트에 실행 가능한 구성 요소(실행할 수 있는 독립 실행형 프로그램)를 포함하는 것이 도움이 될 수 있습니다.

Cargotargets를 사용하면 프로젝트에서 컴파일할 수 있는 다양한 소스 파일 조합을 정의할 수 있습니다. 대상은 소스 코드의 어떤 부분이 라이브러리, 바이너리, 예제, 단위 테스트 또는 벤치마크인지 지정할 수 있습니다.

멋진 점은 Cargo가 폴더 구조conventions를 사용하여 어떤 소스 파일이 무엇을 하는지 추측한다는 것입니다. 예를 들어, src/lib.rs는 라이브러리 코드를 찾는 곳이고, 실행 가능한 코드는 src/main.rs 또는 src/bin/에서 예상됩니다.

기본 바이너리 대상 추가



위의 규칙에 따라 src/bin/pumpkin.rs를 생성하여 기본 실행 파일을 라이브러리 프로젝트에 추가할 수 있습니다.

use pumpkin_rs::say_hello;

fn main() {
    say_hello()
}

cargo run를 실행하면 바이너리가 실행됩니다! 🎉

뿐만 아니라 cargo build는 이제 2개의 개별 출력을 생성합니다. 라이브러리와 실행 파일에 대해 컴파일된 바이너리를 얻습니다.

둘 이상의 이진 대상



우리는 단일 바이너리 대상으로 제한되지 않습니다. 하나 이상이있을 수 있습니다!
만들자src/bin/tomato.rs
fn main() {
    println!("Hello 🍅")
}


이제 이전처럼 cargo run를 실행하면 사용 가능한 바이너리 대상이 두 개 있고 cargo는 우리가 사용하려는 대상을 모르기 때문에 오류 메시지가 표시됩니다. 오류 메시지는 Cargo.toml의 대상 구성을 사용하여 default-run 키를 정의하거나 --bin 인수를 run 명령에 전달할 수 있음을 시사합니다.

cargo run --bin tomato

좋은 웹페이지 즐겨찾기