DevOps

CMake 튜토리얼 - 1

게임이 더 좋아 2022. 9. 16. 19:29
반응형
728x170

C++ 프로젝트를 CI 구성하려다 보니까.. 우분투 환경에서 컴파일, 빌드가 진행되어야 한다.

그래서 그것에 거의 필수적인 오픈소스인 CMake를 알아보기로 하였다.

배움의 길은 멀고도 험하다.

속성으로 끝내보자

 


가장 필요한 빌드부터!! 간단한 것을 빌드부터 해보고 그 다음 복잡하게 가보자

 

우선 제일먼저 CMakeLists 파일을 만들어야 한다.

(이 파일은 Step1 폴더 안에 들어있다.)

CMakeLists.txt 파일을 보자

cmake_minimum_required(VERSION 3.10)

# set the project name
project(Tutorial)

# add the executable
add_executable(Tutorial tutorial.cxx)

 

3가지로 나누어졌다.

1. CMake의 버전

2. 프로젝트 이름

3. 소스 (tutorial.cxx) => 소스코드 이름이다. 

** 소스코드가 있는 path는 알아두어야 한다.(여기선 Step1에 있다고 하자)

=> 다시 말하면 source 코드와 CMakeLists.txt 파일이 같은 곳에 있다.

 


??? 이 3개만으로 빌드가 가능하다고??? 

그렇다. 

cmake를 이용하여 프로젝트를 구성하고 빌드 툴을 이용해서 빌드가 가능하다.

 

**아래 터미널환경은.. Linux 운영체제가 아닐 경우 PowerShell을 통해서 실행하기를 바란다.

 

예를 들면

빌드를 위한 디렉터리를 만든다.

mkdir Step1_build

 

그럼 그 빌드 폴더에 들어가서 소스코드로 프로젝트를 빌드하기 위한 configuration 작업을 진행한다.

cd Step1_build
cmake ../Step1

 

Step1의 경로에 소스코드도 있고 CMakeLists.txt 도 있다.

그 후에 실제 프로젝트를 컴파일하기 위해 아래 커맨드를 실행한다.

cmake --build .

 

잘되었다면 명령어 몇개로 실행해볼 수 있다.

Tutorial 4294967296
Tutorial 10
Tutorial

 

더 정확히 exe 파일을 실행하기 위해서 윈도 Powershell에서 이렇게 실행한다.

 

 


 

그 다음에는 우리가 만든 프로젝트에 버전을 붙일 수 있다.(굳이 안해도 된다)

다만 여기선 헤더파일을 포함하는 법을 배운다.

그냥 CMakeLists.txt 파일을 수정하면 된다.

project() 를 수정하면 된다.

...
# 화살표 대로 수정한다.
project(Tutorial) => project(Tutorial VERSION 1.0)

...

 

또한 버전 정보를 소스코드에 전달하기 위해 Header 파일을 구성할 수 있다.

configure_file(TutorialConfig.h.in TutorialConfig.h)

configured 파일은 bin으로 들어갈 것인데, 어떤 것을 include 할지 경로, directory를 추가해야 한다.

CMakeLists.txt 파일에 추가할 수 있다.

경로에서 include 를 하게끔 만든다.

 

target_include_directories(Tutorial PUBLIC
                           "${PROJECT_BINARY_DIR}"
                           )

 

빌드를 해서 뽑아보자면 잘 나온다.

 

빌드된 파일이 여기있다고 한다.

어이구 잘나온다.

 


 

제일 중요한 명령어이자 튜토리얼 끝까지 함께 갈 명령어를 알아보자.

나는 PowerShell을 쓰기 때문에 조금 다를 수 있지만 비슷하다.

사실 리눅스 같이 man 처럼 --help만 알면 다 쓸 수 있다.

하지만 자주 쓰는 것은 알아두자

5개는 알아두자. 거의 directory가 필수로 필요하다는 것은 알고가자. 그렇지 않으면 cwd 기준으로 실행된다.

#1. Generate a Project Buildsystem
 cmake [<options>] <path-to-source> # CMakeList가 있는 경로
 cmake [<options>] <path-to-existing-build>
 cmake [<options>] -S <path-to-source> -B <path-to-build>

#2. Build a Project 
 cmake --build <dir> [<options>] [-- <build-tool-options>]

#3. Install a Project
 cmake --install <dir> [<options>]

#4. Open a Project
 cmake --open <dir>

#5. Run a Script
 cmake [{-D <var>=<value>}...] -P <cmake-script-file>

#Run a Command-Line Tool
 cmake -E <command> [<options>]

#Run the Find-Package Tool
 cmake --find-package [<options>]

#View Help
 cmake --help[-<topic>]

 

 

 

 


참고 링크

https://cmake.org/cmake/help/latest/guide/tutorial/A%20Basic%20Starting%20Point.html

 

728x90
반응형
그리드형