cmake?
cmake 는 Cross 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 명령으로 빌드만
실행해주면 됩니다.
'Linux' 카테고리의 다른 글
패키지 관리자 Yum Repository 사용 방법 (0) | 2023.11.13 |
---|---|
[Linux] 하위 디렉토리 파일 내용 일괄변경 sed 명령 사용방법 (0) | 2022.04.05 |
[Linux] 심볼릭링크(Symbolic link) 만들기 ln -s (0) | 2022.01.27 |
[Linux] CentOS, Redhat yum repository 저장소 등록 (0) | 2021.12.07 |
[Linux] 사용자 계정 생성과 sudo 권한 주기 (0) | 2021.06.15 |
댓글