[C++/CMake] CMakeLists로 C++ 편하게(?) 컴파일 하기

2022. 7. 28. 12:0003. Resources/C, C++

728x90
반응형

이전 게시물에서도 썼던 것처럼 C++은 진짜 컴파일 하려고 오만 고생을 해야한다.

 

지금 이 포스팅은 맥으로 작성하고 있는데, 내가 회사에서 주로 쓰는 운영체제는 우분투이다.

심지어 플랫폼마다 컴파일 하는 방식이 다 다르다. 지금 맥에서는 clang만 깔려있는데, 회사 컴퓨터에서는 g++을 쓴다.

 

만약 내가 쓰던 맥에서 쓰던 코드를 우분투에서도 쓰려면 여러 컴파일러를 이용해서 코드를 컴파일 하는 커맨드들이나 makefile을 만드는 방법을 알아야하는데 누가 그걸 다 외우고 있나

 

이런 생각을 덜어주기 위해서 CMakeLists를 쓴다고 한다. 얘 하나만 있으면 컴파일러에 대한 걱정을 "덜" 하면서 컴파일을 진행할 수 있기 때문이다.

 

CMake Tutorial도 보고 이런저런 문서들도 같이 보면서 공부를 하고 있다.

 

먼저 mac에서 설치는 쉽게 가능하다.

https://formulae.brew.sh/formula/cmake#default

 

cmake

Homebrew’s package index

formulae.brew.sh

brew를 통해서도 cmake를 설치할 수 있어서

brew install cmake

위의 커맨드를 이용해서 설치하면 된다.

 

가장 기본적인 템플릿은 아래와 같다.

cmake_minimum_required(VERSION 3.21)
project(cmake_test VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_executable(cmake_test src/main.cpp)

cmake의 최소 버전을 명시해준다. cmake 버전 별로도 기능이 많이 다르기 때문에 꼭 필요하다!

그리고 프로젝트에 대한 설명을 적는다.

다음으로 C++의 어떤 버전을 쓸 것인지, 표준 라이브러리를 쓸 것 인지, 익스텐션을 쓸 것인지 체크를 하고

컴파일된 결과물은 어떤 파일을 이용해서 만들 것인지 적어준다.

 

아래는 위에서 실행 파일로 만드는데 쓴다고 적어둔 src/main.cpp 코드이다.

#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
    return 0;
}

위의 코드를 적고, vscode의 cmake 익스텐션을 이용해서 빌드를 진행할 수 있다.

 

설치하면 하단바에 아래 사진과 같은 항목들이 주루룩 생긴다.

어떤 옵션으로 빌드를 할 것인지, 어떤 컴파일러를 사용할 것인지 선택할 수 있다.

빌드 버튼을 누르면 빌드가 진행되고, 재생 버튼을 누르면 executable로 선택한 파일을 실행하게 된다.

 

이정도만 알아도 간단한 테스트 모듈 개발하고 디버그 하기엔 충분한 것 같다.

더욱 복잡한 옵션들도 있는데 일단은 여기까지 적어두자!

반응형