Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

릴리스 프로필을 통한 빌드 커스터마이징하기

러스트에서 릴리스 프로필(release profiles) 은 서로 다른 설정을 가진, 미리 정의된 커스터마이징 가능한 프로필입니다. 이를 통해 프로그래머는 코드 컴파일 옵션을 더 세밀하게 제어할 수 있습니다. 각 프로필은 다른 프로필과 독립적으로 설정됩니다.

Cargo에는 두 가지 주요 프로필이 있습니다. cargo build 를 실행할 때 쓰는 dev 프로필과, cargo build --release 를 실행할 때 쓰는 release 프로필입니다. dev 프로필은 개발에 적합한 기본 설정을 갖고 있고, release 프로필은 릴리스용 빌드에 적합한 기본 설정을 갖고 있습니다.

이 프로필 이름들은 빌드 출력에서 이미 익숙하게 보았을 것입니다.

$ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
    Finished `release` profile [optimized] target(s) in 0.32s

devrelease 가 바로 컴파일러가 사용하는 서로 다른 프로필입니다.

프로젝트의 Cargo.toml 안에 [profile.*] 섹션을 명시적으로 추가하지 않았다면, Cargo는 각 프로필의 기본 설정을 사용합니다. 원하는 프로필에 대해 [profile.*] 섹션을 추가하면, 기본 설정 중 필요한 것만 골라 덮어쓸 수 있습니다. 예를 들어 devrelease 프로필에서 opt-level 설정의 기본값은 다음과 같습니다.

Filename: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

opt-level 설정은 러스트가 여러분의 코드에 얼마나 많은 최적화를 적용할지를 제어하며, 값 범위는 0부터 3까지입니다. 더 많은 최적화를 적용하면 컴파일 시간은 길어집니다. 따라서 개발 중에는 코드를 자주 컴파일하므로, 결과 코드가 조금 느리더라도 더 적은 최적화를 적용해 더 빨리 컴파일하는 편이 좋습니다. 그래서 dev 의 기본 opt-level0 입니다. 반대로 코드를 배포할 준비가 되었을 때는 컴파일에 조금 더 시간을 쓰는 것이 좋습니다. 릴리스 모드로는 한 번만 컴파일하지만, 그 결과물은 여러 번 실행될 것이기 때문입니다. 그래서 release 모드는 컴파일 시간이 더 긴 대신, 더 빠르게 실행되는 코드를 만들어 냅니다. 이것이 release 프로필의 기본 opt-level3 인 이유입니다.

기본 설정을 바꾸고 싶다면 Cargo.toml 안에 다른 값을 적어 덮어쓸 수 있습니다. 예를 들어 개발 프로필에서 최적화 수준 1을 쓰고 싶다면, 프로젝트의 Cargo.toml 에 다음 두 줄을 추가하면 됩니다.

Filename: Cargo.toml

[profile.dev]
opt-level = 1

이 코드는 기본값 0 을 덮어씁니다. 이제 cargo build 를 실행하면 Cargo는 dev 프로필의 기본 설정에 더해 우리가 지정한 opt-level 값을 사용합니다. opt-level1 로 설정했으므로, 기본값보다는 더 많은 최적화를 적용하지만 릴리스 빌드만큼 많이 하지는 않습니다.

각 프로필의 전체 설정 목록과 기본값은 Cargo 문서를 참고하세요.