본문 바로가기
Linux

[Linux] Cmake 설치와 실행 예제

by 정권이 내 2021. 5. 7.

cmake?


cmakeCross Platform Make 의 약자로 여러 플랫폼에서 사용할수있는 Make 대용의

오픈소스 빌드 툴 입니다.

C, C++ 프로젝트를 진행하다보면 각 파일들이 참조하는 라이브러리나 헤더파일의

관계가 한눈에 파악이 안될정도로 복잡하게 얽히게 됩니다. 기존에는 Makefile 을 만들때 이러한

관계를 모두 파악하고 빌드 스크립트를 만들어야 오류없이 빌드를 할수 있었습니다.


그리고 Makefile 작성시 모든 오브젝트에 대해 직접적인 명시를 해야 되는데 cmake

이러한 작업을 생략하고 빌드 결과물과 필요한 소스파일만 명시해주면 Makefile을 생성합니다.


cmake 설치

cmake를 설치하기위해서는 우선 몇가지 패키지가 우선적으로 설치되있어야 합니다.

make , gcc, gcc-c++ openssl, openssl-devel 패키지를 먼저 설치후 진행해주시기 바랍니다.


cmake 설치 소스 다운로드

설치버전은 3.15.2 버전입니다. 다른 버전을 받고싶다면 https://cmake.org/files 에서 원하는

버전을 찾아서 받으면 됩니다.

$ wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz
$ tar xvfz cmake-3.15.2.tar.gz
$ cd cmake-3.15.2

반응형

빌드, 설치

cmake 를 이용하는 방법도 있지만 cmake 가 없는상태라 가정하고 진행합니다.


$ ./bootstrap


$ make
$ make install

여기까지 정상적으로 실행이 됬다면 설치는 완료됬습니다. 설치 확인을 위해서 버전을 확인해봅시다.


$ cmake --version


cmake 사용

cmake 설치가 완료되었다면 예제를 한번 진행해보겠습니다.


소스 디렉토리 생성

$ mkdir cmake_test1
$ cd cmake_test1

소스 파일 작성

bar.cpp

#include<stdio.h>

void bar()
{
    printf("bar\n");
}

bar.h

void bar();

foo.cpp

#include<stdio.h>

void foo()
{
    printf("foo\n");
}

foo.h

void foo();

main.cpp

#include "foo.h"
#include "bar.h"

int main()
{
    foo();
    bar();

    return 0;
}

반응형

CMakeLists.txt 작성

이 파일은 cmake가 Makefile 를 만들기 위해 사용하는 파일입니다. 빌드의 결과물로 나올 바이너리의

이름과 빌드에 사용되는 소스파일의 목록을 입력하면 됩니다.

헤더파일은 직접 명시하지 않아도 cmake 에서 직접 소스내부의 include 정보로 연결관계를 파악하여

자동으로 호출하게 됩니다.

$ vi CMakeLists.txt
ADD_EXECUTABLE( CMake_test main.cpp foo.cpp bar.cpp)

build 디렉토리 생성

cmake 빌드를 소스와 같은 경로에서 해도 되지만 관리를 위해 따로 디렉토리를 생성합니다.

$ mkdir build
$ cd build

cmake 사용

이제 준비가 다 되었으니 cmake 를 사용해봅시다.

$ cmake ..

-rw-rw-r--. 1 elktest elktest 13281  5월  7 13:49 CMakeCache.txt
drwxrwxr-x. 5 elktest elktest  4096  5월  7 13:49 CMakeFiles
-rw-rw-r--. 1 elktest elktest  6057  5월  7 13:49 Makefile
-rw-rw-r--. 1 elktest elktest  1502  5월  7 13:49 cmake_install.cmake

cmake 명령후 에러없이 Makefile 이 생성되었다면 정상적으로 실행된것입니다. 이제 만들어진

Makefile 로 빌드를 해봅시다.


$ make


CMakeLists.txt 파일에 지정해놓은 이름대로 CMake_test 라는 바이너리가 생성되었습니다.

바이너리 실행까지 확인해보겠습니다.


$ ./CMake_test


프로그램이 만든대로 동작하는것을 확인할수 있습니다.

cmake 명령은 소스가 새로 추가되어 CMakeLists.txt 파일을 수정하지 않는 이상 최초 한번만 실행해

주면 되고 기존에 있던 소스가 수정될경우에는 만들어진 Makefile 을 이용해 make 명령으로 빌드만

실행해주면 됩니다.

반응형

댓글