
CMake는 컴파일러 및 플랫폼에 독립적인 구성 파일을 사용하여 컴파일러 및 플랫폼에 특정한 네이티브 빌드 도구를 생성하는 Open-Source, Cross-Platform Tool 입니다. vscode 에서는 CMake Tools extension 사용 하여 C ++ 프로젝트를 쉽게 구성, 빌드 및 디버그 할 수 있도록 합니다.
CMake 는 Makefile Base로 Build 환경을 갖출 수도 있고 요즘 핫한 Ninja로 Build 환경을 갖출 수 있습니다.. 그런데 Vscode에서 CMake Extension을 사용하여 CMake를 하게 되면 기본으로 Makefile base가 되는거 같습니다.
그런데 여기에서 Ninja가 설치 되어 있다면 Ninja Base로 Build 환경울 갖춘다고 나와 있습니다. 조금 있다 Ninja도 설치 해서 해볼 예정 입니다.
WSL Ubuntu 에서 Vscode를 사용 해서 Cmake를 사용하여 Build 환경을 갖추는 걸 목표로 진행 합니다.
😉필요 설치 프로그램들
- Vscode에서 필요 한거 설치
- Cmake,g++,gdb 등 설치
sudo apt-get update -y # 최신 패키지를 갖져 오기 위해서
sudo apt-get install cmake -y # CMake 설치
sudo apt-get install build-essential gdb -y # Compiler 설치
😊 Cmake 예제 파일 만들기
폴더를 하나 만들고 여기를 WorkSpace를 하도록 Vscode를 실행 해서 Command Palette (Ctrl+Shift+P) 를 열어 봅니다.
cmake 기본 파일을 생성하기 위해서 cmake extension에서 제공하는 Quick Start를 사용 하겠습니다.
Command Palette에서 "cmake:qu~" 정도 입력 해보면 아래와 같이 Quick Start가 나옵니다.
실행해보면 컴파일 툴체인 환경을 어떤걸로 할건지, 프로젝트 이름은 뭘로 할건지 그리고 라이브러를 만드는 Cmake 환경으로 할건지 실행 파일로 만들것이지 선택 하라는 것이 나옵니다. 환경에 맞게끔 선택을 하면 됩니다.
그럼 아래와 같이 Hello world! main.cpp의 기본 환경이 갖춰집니다.
🤣Cmake 기본 Config
두가지의 Configure 를 체크 합니다. 하나는 컴파일 하는 툴체인을 셋하고 , 또 다른 하나는 Build Variant 라고 Debug,Release를 선택 해줍니다.
🎃툴체인 설정하기
Command Palette (Ctrl+Shift+P) 에서 CMake: Select a Kit. 를 찾아서 실행 해보면 현재 가능한 Tool Chain이 나오는데 해당 되는 것을 선택 해 줍니다.
🎃Build Variant 설정하기
Command Palette (Ctrl+Shift+P) 에서 CMake: Select a Kit. 를 찾아서 실해 해보면 여러 가지가 나오는데 일반적인 Debug를 선택해 봅니다.
😎Cmake build 하기
Cmake 환경에서 빌드 하는 방법은 두가지가 있는데 하나는 Cmake 해서 만들어진 (Makefile, Ninja) 에서 make all 을 하여 Build 하는 방법이 있고 하나는 Cmake --build 하여 빌드 하는 방법이 있습니다.
Cmake quick 으로 만드어진 예제에는 task.json 이 없고 Cmake Extension 에서 제공하는 cmake build를 사용 합니다. 이게 더 편하기도 합니다.
Command Palette (Ctrl+Shift+P) 에서 CMake: Build 를 실행 하거나 아래처럼 맨 밑 Status bar의 build 눌러 주면 빌드를 시작합니다. Build 과정은 컴파일 해서 실행 파일로 만드는 과정을 지칭 합니다.
😱 Cmake Debug 하기
debug를 하려면 launch.json이 필요 합니다. cmake quick star에서 만들어 준 launch.json을 사용합니다.
Command Palette (Ctrl+Shift+P) 에서 CMake: Debug. 를 실행 하면 실행 파일을 실행 합니다. Status Bar의 벌래 모양이 Break Point 를 찍어준 곳을 하나하나 디버깅하는 모드로 실행하며 Play Button 모양은 Debugging 없이 실행 파일만 실행 하게 됩니다.
🥰Ninja 를 사용해서 Build 진행 하기
Ninja는 Makefile보다 더 빨리 처리하여 많이 쓰여지고 있는 추세입니다. 일단 Ninja를 설치 해봅니다.
sudo apt-get update -y
sudo apt-get install -y ninja-build
이전 만들어진 환경을 제거 해준다. CMake: Remove build directory 를 선택 해줍니다.
그리고 CMake: build 는 target build가 아니고 Cmake 의 build 입니다. build를 하고 나서 보면 아래와 같이 Makefile based 대신 Ninja 환경으로 build 환경이 갖춰진 것이 보입니다.

'Language' 카테고리의 다른 글
SystemC 요약 하기.. (0) | 2023.07.26 |
---|---|
UVM TLM 내용 정리 하자 (0) | 2023.07.21 |
RISC-V TLM 실행해보기 (0) | 2023.07.21 |
SystemC 환경 잡기 (0) | 2023.07.21 |