알고리즘 풀이를 위한 CMake 환경 구성

Profile-exe·2023년 6월 10일
0

IDE 설정

목록 보기
7/7
post-thumbnail

이전 글인 Github Codespaces로 군대에서 코딩하기에 이어서 알고리즘 문제 풀이를 위한 CMake 환경 구성을 해보도록 하겠다.

이 환경 설정은 Github Codespaces 뿐만 아니라 일반적인 Linux 환경에서도 적용되는 것이다. 따라서 윈도우에서도 WSL를 사용해 VS Code 환경에서 해당 내용으로 개발 환경을 구축할 수 있다.


1. CMake, g++ 설치 확인

CMake 할 때 쪼오오금 도움이 되는 문서
CMake 환경 구성에 어려움이 있다면 위 문서를 참고하고 아래 내 폴더 구조를 보면 되겠다.

아래 사진은 Github Codepaces에서 빈 템플릿(Blank)을 생성 후 알고리즘 문제풀이에 필요한 패키지들이 설치되었는지 터미널에서 확인한 것이다.

cmakeg++, Python이 설치되어있어 C/C++, Python을 활용해 알고리즘 문제를 풀 수 있다.

Blank 템플릿 생성 초기화면


2. CMake Tools Extension 설치

CMake Tools 확장을 설치하면 CMake 확장까지 같이 설치된다.
해당 확장을 이용해 VS Code에서 CMake환경을 편하게 이용할 수 있다.
CMake Tools 확장 이미지


3. CMake 환경 설정

하단의 상태표시줄에 CMake 확장 메뉴들이 나와있는지 확인한다.
아래 사진에서는 Live Share 다음 메뉴들이 CMake 확장 버튼들이다.

CMake 확장 버튼들

해당 버튼들이 안보인다면 상태표시줄을 우클릭 후 CMake Tools(확장)을 선택해 표시한다.

VS Code 상태표시줄

No Kit Selected 버튼을 눌러 컴파일러를 선택해준다. 나는 GCC 9.4.0을 선택했다.


4. 폴더 구조

아래는 CMake를 이용해 개발 및 알고리즘 문제를 푼다고 가정한 폴더 구조이다.
src 안에 acmicpc, car라는 서브 디렉터리가 존재하고
그 디렉터리마다 각각 소스파일들이 존재한다.

루트 디렉터리
├── CMakeLists.txt
└── src
    ├── CMakeLists.txt
    ├── acmicpc
    │   ├── CMakeLists.txt
    │   ├── 4029.cpp
    │   └── 1092.cpp
    └── car
        ├── CMakeLists.txt
        ├── main.cpp
        ├── Car.cpp
        ├── Car.h
        └── Vehicle.h
  • ~/CMakeLists.txt
    가장 최상위의 CMakeLists로 프로젝트 관련 설정들을 넣어준다.
cmake_minimum_required(VERSION 3.0.0)
project(algorithm)

add_subdirectory(src)
  • src/CMakeLists.txt
    하위 디렉터리들을 프로젝트에 추가해준다.
add_subdirectory(acmicpc)
add_subdirectory(car)
  • src/acmicpc/CMakeLists.txt
    acmicpc디렉터리는 백준 알고리즘 문제를 푸는 소스코드를 모아두고 실행하는 장소이다.

소스파일 하나 하나가 독립된 실행 파일로 존재해야하므로 add_executable을 통해 설정해주었다.
나중에 CMakeLists.txt를 더 잘 다루게 되면 이러한 설정도 변수 등을 통해 자동화를 해봐야겠다.

add_executable(실행이름 [공백] 같이 빌드할 파일들 나열) 이렇게 사용하면 된다.

add_executable(1092 1092.cpp)
add_executable(4029 4029.cpp)
  • src/car/CMakeLists.txt
    car디렉터리는 여러 파일을 같이 빌드해야하는 상황이라 가정하고 만들어보았다.
    main.cpp을 실행파일로 두고 나머지 Car.cppCar.h를 같이 빌드한다.
add_executable(Car
    main.cpp
    Car.cpp
    Car.h
    Vehicle.h
)

5. 실행하기

상태표시줄에서 왼쪽에서부터 맨 우측(화살표 오른쪽 버튼)에서 실행할 목록을 선택할 수 있다.

CMake에서 실행할 목록 선택

1092.cpp을 다음과 같은 내용으로 설정 후 [1092]로 선택하고 바로 옆 화살표 버튼을 누르면 잘 실행되는 것을 볼 수 있다.

#include <iostream>

using namespace std;

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

1092.cpp 실행화면

주의!!

CMakeLists.txt를 편집한 후에는 반드시 저장(Ctrl + S)을 해주어야 한다.

저장과 동시에 CMake명령어가 실행되며 출력창에서 해당 결과가 나온다.
Configuring done, Generating done, Build files have been written to:~가 나온다면 정상적으로 설정이 된 것이다.

물론 실행할 파일들 또한 저장을 한 이후 실행해야한다.


6. 디버깅(Debugging)

위와 동일하게 실행팔 파일을 선택
원하는 위치에 중단점을 찍고 화살표가 아닌 벌레(디버깅 실행)버튼을 누르면 된다.


정리

  • Cmake를 이용해 Github Codespaces환경에서 알고리즘 등 cpp 실행 환경 구현
  • 디버깅도 가능하며, 여러 파일을 같이 묶어 빌드 및 실행 가능
  • C++ 공부를 하면서 각 진도마다 디렉터리를 구분하고 실행하기를 원할때도 유용

CMakeJetBrains사의 CLion에서 사용했었는데, VS Code에서도 이렇게 사용이 가능하다.

처음 사용하게 된다면 어렵게 느껴질 수 있지만, 익숙해진다면 C/C++ 공부와 알고리즘 문제 풀이에 있어서 가장 편리한 기능이라고 생각한다.

profile
컴퓨터공학과 학부생

0개의 댓글