알고리즘 풀이를 위한 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을 활용해 알고리즘 문제를 풀 수 있다.


2. CMake Tools Extension 설치

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


3. CMake 환경 설정

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

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

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. 실행하기

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

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

#include <iostream>

using namespace std;

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

주의!!

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개의 댓글