본문 바로가기

IT/Linux

cmake option

cmake 예약 변수

cmake에는 자동으로 지정된 변수들이 많은데 이들을 잘 알아야 원하는 빌드 설정을 하고 CMakeLists.txt도 쉽게 작성할 수 있다. 대부분 CMAKE_로 시작하며 CMakeCache.txt를 보면 어떤 변수들이 있는지 볼 수 있다. 그 중 중요한 몇 개만 여기에 설명하는데 아래 내용을 보다가 이 변수들이 나오면 의미를 찾아보자.

 

  • CMAKE_CURRENT_SOURCE_DIR: 소스 파일들을 찾을 디렉토리 경로로 CMakeLists.txt가 있는 경로가 기본 값으로 들어있다. 다른 경로를 설정할 때 이 변수를 기준으로 상대 경로를 만들면 편하다.
  • CMAKE_INSTALL_PREFIX: make install 할때 빌드 결과물이 복사될 경로로 /usr/local이 기본 값이다. 자세한 설명은 install() 함수 내용을 참조한다.
  • CMAKE_PREFIX_PATH: find_package() 등의 명령에서 외부 프로젝트를 검색할 경로다. 어떤 프로젝트에서 다른 프로젝트의 라이브러리를 사용하고자 할 때 이 변수의 경로에서 하위 디렉토리까지 전부 검색한다.
  • CMAKE_PROJECT_NAME : project()라는 명령어에서 설정할 수 있는 프로젝트의 이름이다.
  • CMAKE_BUILD_TYPE: 빌드 형상을 지정할 수 있는 변수인데 빌드 형상은 대표적으로 Debug와 Release가 있다.

CMAKE_BUILD_TYPE - 빌드 형상(Configuration)

CMake 빌드 시스템에서도 여타 IDE에서와 같이 빌드 형상을 지정할 수 있습니다. 빌드 형상이란 빌드 목적(디버깅용인지, 배포용인지, 삽질용인지)에 따라 서로 다른 옵션을 지정해서 빌드하는 것으로, 대표적으로 Debug Release가 있습니다.

CMake에서는 기본적으로 다음과 같이 네 가지 빌드 형상을 지원하며, 필요한 경우 사용자 정의 빌드 형상을 정의할 수도 있습니다.

  • Debug : 디버깅 목적의 빌드
  • Release : 배포 목적의 빌드
  • RelWithDebInfo : 배포 목적의 빌드지만, 디버깅 정보 포함
  • MinSizeRel : 최소 크기로 최적화한 배포 목적 빌드

이 변수를 지정하면 Makefile을 작성할 때 빌드 형상에 따라 서로 다른 빌드 옵션(플래그)을 삽입해 줍니다. 따라서 빌드 목적별로 빌드 스크립트를 각각 따로 만들어 줘야 할 수고를 하지 않아도 되므로 편리합니다.

 

  • CMAKE_CXX_COMPILER: c++컴파일러를 지정할 수 있다. g++이 기본이지만 다른 컴파일러나 g++의 다른 버전을 선택할 수 있다.
  • CMAKE_CXX_FLAGS: c++ 컴파일 옵션을 지정한다.

ADD_COMPILE_OPTIONS() 컴파일 옵션 설정

1.2.1 예제에서는 넣지 않았지만 실제로 컴파일을 할 때는 다양한 옵션을 입력해준다. 컴파일 옵션을 입력할 수 있는 함수가 ADD_COMPILE_OPTIONS()인데 옵션들을 공백으로 구분하여 넣어주면 된다. 컴파일 옵션을 지정하는 다른 방법은 CMAKE_CXX_FLAGS를 이용하는 것이다. 이 변수에 옵션 값을 넣어도 컴파일 옵션에 들어간다.

 

  • -Wall: 컴파일 과정에서의 모든 warning 화면에 출력
  • -std=c++14: c++14 사용
  • -O2: 2단계 컴파일 최적화 사용
  • -fPIC: 라이브러리를 만들 때 필요한 옵션

다양한 컴파일 옵션에 대한 설명은 아래 링크들을 참조한다.

cmake [option]

  •  -G <generator-name>          = Specify a build system generator.

 

 

 

 

[CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 - ECE - TUWLAB

▶ 이 글에서는 CMake 빌드 스크립트인 CMakeLists.txt 파일을 작성하는 방법에 대해 다룹니다. CMake 2.8.x 버전 기준이며, C언어 프로젝트를 기준으로 자주 사용되는 명령과 변수들을 선별하여 기능에 �

www.tuwlab.com

 

 

 

[C++] CMake Build System « IanFlow

1. Linux Build System C언어를 처음 배울 때 보통 Visual Studio에서 시작하는 경우가 많다. Visual Studio(이하 VS)는 통합개발환경(IDE)라서 VS에서 코딩도하고 컴파일 빌드 디버깅 실행 모두가 가능하다. 하지

goodgodgd.github.io

 

'IT > Linux' 카테고리의 다른 글

apt-get 명령어/ package 설치, 삭제, 검색  (0) 2020.10.06
vi 편집기 라인 이동  (0) 2020.09.28
make install  (0) 2020.09.28
CMake Build System / gcc, make, cmake 차이점  (0) 2020.09.28
cmake 과정  (0) 2020.09.28