개발

[VSCode] C++ 설치 및 실행(with windows)

눌지 2024. 11. 15. 11:15

알고리즘 공부를 위해 C++를 사용할 일이 생겼고, 자주 사용하는 IDE인 VSCode에서 코드를 작성하기 위해 환경 설정을 합니다.

 

우선 기본적으로 VSCode에서 제공하는 공식문서를 참고하고 그 외 블로그들을 참고해 환경을 구축했습니다.

 

VSCode를 실행하고 C/C++ Extension을 설치해야 합니다.

C/C++ Extension

추가적인 Extension은 자유롭게 추가하시면 됩니다.

 

여기에 C++는 컴파일러 언어이기 때문에 이를 실행시키기 위해서 컴파일러가 필요합니다. 먼저 terminal을 통해 설치된 컴파일러가 있는지 확인하겠습니다.

g++ --version

컴파일러 설치가 되어있는 경우 실행 결과

컴파일러가 설치되어 있다면 위와 같이 어떠한 버전이 나옵니다. 버전과 결과 내용은 사용자마다 다를 수 있습니다.

 

만약 설치가 되어 있지 않다면 MinGW를 설치해서 사용하도록 하겠습니다.

 

우선 저희는 문서에 따라 MSYS2를 통해 MinGW를 설치할 예정입니다. 그에 따라 MSYS2를 먼저 설치하겠습니다. 친절하게도 VSCode의 공식문서에서는 따로 사이트 접속이 필요하지 않고 다운로드할 수 있는 링크를 제공하고 있습니다. (문제가 생기면 링크는 사라질 수 있습니다...)

 

사실 다른 블로그를 보면 MSYS2를 설치할 필요 없이 MinGW를 직접 다운로드하여서 사용할 수 있습니다. 그렇다면 MSYS2를 설치하는 이유는 무엇일까요? 잠깐 무엇인지 알아보고 넘어가겠습니다.

 

MSYS2란? Windows용 소프트웨어 배포판이자 빌드 플랫폼입니다. Unix와 유사한 환경, cli 인터페이스 그리고 소프트웨어 repository를 제공해 Windows에서 소프트웨어의 설치, 사용, 빌드 및 이식 작업을 더 쉽게 도와줍니다. 다양한 도구들을 Pacman이라는 패키지 관리자가 있습니다.

 

잠깐 알아본 내용으로는 Nodejs와 npm과 다르지만 비슷한 관계로 이해하면 될 듯합니다. 또한 Windows에서 사용되는 Chocolatey와도 다르지만 비슷한 용도로 사용된다고 이해하고 넘어가겠습니다.

 

설치가 끝나고 자동 실행을 시키면 터미널 창이 열리게 됩니다. 위에서 설명했듯이 저희는 Pacman을 활용해 MinGW를 설치할 예정입니다.

$ pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

 

다음과 같은 명령어를 실행시키고 한 번의 Enter와 Y를 입력하면 설치가 진행됩니다.

 

마지막으로 환경 변수를 설정해야 합니다. 기본 옵션을 통해 설치를 진행했다면 'C:\msys64\ucrt64\bin'에 gcc, g++을 여러 실행 파일이 있는 것을 확인할 수 있습니다. 없다면 다른 폴더를 열어보고 찾아야 합니다.

환경 변수 편집 과정

  1. 환경 변수 탭을 열어줍니다
  2. 시스템 변수 안에 Path를 더블 클릭하거나 클릭 후 편집을 버튼을 눌러 열어줍니다
  3. 새로 만들기 버튼을 눌러 위에서 찾은 경로를 추가합니다.

이제 VSCode로 넘어가 *.cpp 확장자로 파일을 만들어 실행시키면 문제없이 동작합니다.

실행 방법

  1. 화살표 버튼을 눌러 Run C/C++ File를 실행합니다
  2. 그림에 보이는 내용을 찾아 실행합니다.
#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "hello";

    return 0;
}

결과 화면

성공적으로 동작하는 것을 볼 수 있습니다.

 

만약 안 된다면 VSCode에서 F1을 눌러 C/C++: Edit Configuraionts (UI) 메뉴를 찾아서 열어줍니다.

내부에 들어가면 다른 옵션은 필요하면 사용하고 Complier path라는 옵션을 찾아 폴더 경로를 입력합니다.

다시 실행해 보면 잘 되는 것을 확인할 수 있습니다.

 

여기서부터는 추가 옵션입니다.

 

저는 코딩 테스트 공부를 위해 설치했기 때문에 bits/stdc++ 헤더를 사용할 예정입니다. 하지만 위에서 한 설정만으로는 사용할 수 없습니다.

 

우선 위에서 사용한 폴더의 C:\msys64\ucrt64\include 경로로 이동합니다. 해당 경로에 bits 폴더를 추가하고 내부에 stdc++.h 파일을 추가할 것입니다.

 

▶ stdc++.h 파일 내부

더보기
  #ifndef _GLIBCXX_NO_ASSERT
  #include <cassert>
  #endif
  #include <cctype>
  #include <cerrno>
  #include <cfloat>
  #include <ciso646>
  #include <climits>
  #include <clocale>
  #include <cmath>
  #include <csetjmp>
  #include <csignal>
  #include <cstdarg>
  #include <cstddef>
  #include <cstdio>
  #include <cstdlib>
  #include <cstring>
  #include <ctime>

  #if __cplusplus >= 201103L
  #include <ccomplex>
  #include <cfenv>
  #include <cinttypes>
  #include <cstdbool>
  #include <cstdint>
  #include <ctgmath>
  #include <cwchar>
  #include <cwctype>
  #endif

  // C++
  #include <algorithm>
  #include <bitset>
  #include <complex>
  #include <deque>
  #include <exception>
  #include <fstream>
  #include <functional>
  #include <iomanip>
  #include <ios>
  #include <iosfwd>
  #include <iostream>
  #include <istream>
  #include <iterator>
  #include <limits>
  #include <list>
  #include <locale>
  #include <map>
  #include <memory>
  #include <new>
  #include <numeric>
  #include <ostream>
  #include <queue>
  #include <set>
  #include <sstream>
  #include <stack>
  #include <stdexcept>
  #include <streambuf>
  #include <string>
  #include <typeinfo>
  #include <utility>
  #include <valarray>
  #include <vector>

  #if __cplusplus >= 201103L
  #include <array>
  #include <atomic>
  #include <chrono>
  #include <condition_variable>
  #include <forward_list>
  #include <future>
  #include <initializer_list>
  #include <mutex>
  #include <random>
  #include <ratio>
  #include <regex>
  #include <scoped_allocator>
  #include <system_error>
  #include <thread>
  #include <tuple>
  #include <typeindex>
  #include <type_traits>
  #include <unordered_map>
  #include <unordered_set>
  #endif

파일을 추가하고 VSCode로 돌아가면 c_cpp_properties.json 파일로 들어갑니다.

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/**",
        "C:/msys64/ucrt64/include" // 여기여기
      ],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "compilerPath": "C:/msys64/ucrt64/bin"
    }
  ],
  "version": 4
}

 

내부 옵션 중 includePath에 bits 폴더를 추가한 경로를 추가합니다. 이때 \(역 슬래쉬)가 아닌 /(슬래쉬)로 경로를 설정해야 잘 동작합니다.

 

해당 경로까지 추가하고 나면 원하는 대로 bits/stdc++ 헤더를 사용할 수 있습니다.

 

고생하셨습니다~

 

참고

C/C++ for Visual Studio Code, VSCode공식문서, 2024.11.15

Using GCC with MinGW, VSCode공식문서, 2024.11.15

VSCode로 C++ 개발 환경 구축하기(알고리즘), Amylo, 2024.11.15

[VSCode] VSCode에서 <bits/stdc++.h> 헤더 파일 사용하기, @Reo, 2024.11.15

MSYS2 Introduction, MSYS2공식문서, 2024.11.15

MSYS2 vs Chocolatey, wikidocs, 2024.11.15