cmake 기초 작성
CMake
시작하게된 계기
- 개인 프로젝트를 시작하기에 앞서 프로젝트 구조를 잡는 것부터 생각했다. 거창하게 프로그램을 만들게 아니라서 이런 부분을 생각할 필요는 없지만, 기본 구조잡는 것을 한 번 만들어두면 나중에 또 쓸지도 몰라 시작하기로 했다. cmake를 사용해서 만들예정! 목표는 쉽고 간단한게 사용할 수 있는 빌드
환경
- 따로 Linux 설치 없이 윈도우10 내장 Linux(우분투)로 진행
- window : https://cmake.org/
- Linux : apt-get install cmake
간단한 CMakeList.txt 작성
- CMakeList.txt는 간단하게 cmake를 동작하게 하기위한 스크립트이다.
아래의 그림과 같은 디렉토리 구조를 빌드
- main.cpp, hello.h, hello.cpp를 빌드하는 CMakeList.txt
# CMakeList.txt
CMAKE_MINIMUM_REQUIRED ( VERSION 2.8 )
PROJECT( tutorial )
INCLUDE_DIRECTORIES(include)
SET(SRC_FILES src/main.cpp src/hello.cpp)
SET(EXE_NAME ${CMAKE_PROJECT_NAME}_exe)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
ADD_EXECUTABLE(${EXE_NAME} ${SRC_FILES} )
- CMAKE_MINIMUM_REQUIRED : 이 cmake를 실행할 최소 버전을 명시, 2.8이상부터 할 수 있도록 하였다.
- PROJECT : 이 프로젝트의 이름을 지정, tutorial로 지정
- INCLUDE_DIRECTORIES : 소스파일에 추가한 헤더 파일을 찾을 디렉토리 목록을 추가, include 디렉토리에 hello.h가 있어서 추가해주었다.
- SET(변수명 {추가할 목록1} {추가할 목록2} … ) : 변수를 지정, SRC_FILSE라는 변수에 컴파일할 소스 파일을 추가해주었다.
- CMAKE_PROJECT_NAME : 위쪽의 PROJECT에 지정한 이름이 담긴 변수, PROJECT_NAME로 쓸 수도 있다.
- CMAKE_SOURCE_DIR : CMakeList.txt가 있는 위치가 있는 변수
- CMAKE_RUNTIME_OUTPUT_DIRECTORY : 최종 결과 실행파일이 출력될 디렉토리를 지정하는 변수
- ADD_EXECUTABLE(output {소스파일} ) : 최종 결과물로 생성할 실행 파일을 만듦. SRC_FILES의 소스파일을 이용해서 tutorial_exe라는 바이너리 실행파일을 만든다.
실행
이렇게해서 build 디렉토리에서
cmake ../
- cmake를 실행시킨다.
- 실행하면 Makefile이 생성되서 make를 이용해서 실행파일을 생성할 수 있다.
- 실행파일에 링크가 어떤식으로 되어있는지 등은 CMakeFiles 밑에 link.txt에서 확인할 수 있다.
더 많은 명령어와 세부적인 동작은 다음에 정리하는 것으로 하자.