빌드 구성은 프로젝트가 디버그, 최적화, 또는 플래그의 어떤 다른 특별한 집합을 위한 다른 방법으로 빌드되는 것을 허락한다
디폴트로 CMake는 Debug, Reelase, MinSizeRel, 그리고 RelWidthDebInfor 구성을 지원한다
Debug는 기본 디버그 플래그를 켜 놓는다
Release는 기본 최적화로 켜 놓는다
MinSizeRed은 가장 작은 객체 코드를 생성하는 플래그를 갖지만 가자아 빠른 코드에 필수적인 것은 아니다
RelWithDebInfo 는 또한 디버그 정보를 가지고 최적화된 빌드를 빌드한다
CMake는 발생기가 사용되는 것에 의존하는 다소 다른 방법들로 구성을 다룬다
순수 빌드 시스템의 관습은 가능할 때 따라온다
이것은 구성이 Makefiles를 사용하는 것 대 Visual Studio 프로젝트 파일을 사용하는 것일 때 다른 방법으로 빌드에 영향을 주는 것을 의미한다
Visual Studio IDE는 빌드 구성의 개념을 지지한다
Visual Studio에서 디폴터는 보통 Debug와 Release 구성을 가진다
IDE로부터 당신은 Debug를 빌드를 선택할 수 있고 파일은 Debug 플래그를 가지고 빌드될 것이다
IDE는 바이너리 파일들 모두 능동적인 구성의 이름을 가지고 디렉토리에 놓을 것이다
이것은 사용자 명령어로부터 빌드 과정의 부분으로 실행될 필요가 있는 프로그램을 빌드하는 프로젝트에 대해 특별한 복잡도를 가져온다
CMAKE_CFG_INTDIR 변수와 이 이슈를 다루는 방법에 관한 더 많은 정보에 대해 사용자 명령어 부분응ㄹ 보라
변수 CMAKE_CONFIGURATION_TYPES 는 CMake가 어느 구성을 workspace에 놓을지를 말해준다
발생기에 기초한 Makefile을 가지고, 오직 한가지 구성은 CMake가 시작되는 시점에 활성화 될 수 있고, 그것은 CMAKE_BUILD_TYPE 변수에 의해 지정된다
만약 변수가 비어있으면 어떤 플래그도 빌드에 추가될 수 없다
만약 변수가 구성의 이름에 설정된다면, 적당한 변수와 규칙( CMAKE_CXX_FLAGS_<ConfigName> )은 컴파일 줄에 추가된다
Makefiles는 객체 파일에 대해 특별한 구성 서브 디렉토리를 사용하지 않는다
디버그와 릴리즈 트리 둘 다 빌드하기 위해 사용자는 CMake의 소스 빌트 특징의 외부를 사용하여 여러 개의 빌드 디렉토리를 생성하고 CMAKE_BUILD_TYPE을 각 빌드에 대해 지정된 선택으로 설정함으로써 기대된다
예를 들면
# With source code in the directory MyProject
# to build MyProject-debug create that directory, cd into it and
(ccmake ../MyProject -DCMAKE_BUILD_TYPE:STRING=Debug)
# the same idea is used for the release tree MyProject-release
(ccmake ../MyProject -DCMAKE_BUILD_TYPE:STRING=Release)
댓글