• VS Code에서 WSL 2와 C++ 환경설정 하기

    2020. 11. 29.

    by. beeem

    WSL에 대해 알아보다가 VS Code에 연결해서 사용하면 어떨까 하여 적용해본 과정을 기록해봅니다.


    1. WSL2 설치

    우선 WSL(Windows Subsystem for Linux)을 설치해보겠습니다.

    먼저 마이크로소프트 스토어에서 윈도우 터미널을 설치합니다.

    설치가 완료되면 관리자 권한으로 실행합니다.

    Linux 배포를 설치하기 전에 Linux용 Windows 하위 시스템 옵션과 Virtual Machine 플랫폼 옵션 기능을 사용하도록 설정해야 합니다.

    아래 명령어를 실행해주시면 됩니다.

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    명령어를 복사하고 터미널에서 마우스 우클릭하면 붙여넣기가 됩니다.

    완료되면 컴퓨터를 재부팅합니다.

    다시 터미널을 열고 wsl을 입력해봅니다.

    https://aka.ms/wslstore

    설치된 배포가 없다고 합니다. 그 아래에 있는 주소에 접속하면 마이크로소프트 스토어에서 설치할 수 있는 배포 목록 페이지로 이동합니다.

    저는 우분투 배포판을 설치하겠습니다.

    설치가 완료되면 자동으로 우분투 터미널이 실행되거나 시작하라는 알림이 뜹니다.

    실행을 하여 리눅스 사용자 계정과 암호를 설정해줍니다.

    이 계정은 관리자로 간주됩니다.

    리눅스 사용자 계정과 암호에 대한 자세한 내용은 이곳에서 확인할 수 있습니다.

    계정 설정까지 마쳤으면 Windows 터미널에서 wsl -l명령어를 입력해봅니다.

    우분투 배포판이 보입니다.

    이제 WSL2로 설정하기 전에 리눅스 커널 업데이트 패키지를 다운로드합니다.
    x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 다운로드

    패키지를 다운로드하고 실행하여 설치를 진행합니다.

    설치가 완료되면 이제 WSL 2를 기본 버전으로 설정하겠습니다.

    위에서 설치한 우분투 배포판과 앞으로 새 배포판을 설치할 때 WSL 2를 기본 버전으로 설정하기 위한 명령어를 실행해줍니다.

    wsl --set-default-version 2
    wsl --set-version Ubuntu 2

    wsl -l -v 명령어로 버전을 확인할 수 있습니다.

    이제 WSL 2에서 우분투를 시작할 수 있습니다.

    명령어에 대해 궁금하시다면 wsl --help를 입력해보세요.

    명령어에 대한 설명이 나옵니다.


    2. VS Code 설정

    먼저 VS Code를 실행합니다.

    그럼 우측 하단에 Remote-WSL extension을 설치할 것을 권하는 알림이 뜹니다.

    Install을 클릭하여 설치해줍니다.

    만약 알림이 뜨지 않는다면 Remote - WSL을 검색하여 설치해줍니다.

    그리고 C/C++ 확장도 설치해줍니다.

    이제 우분투 터미널을 열고 우분투 패키지를 업데이트합니다.

    sudo apt-get update

    sudo 명령어는 관리자 계정으로 실행할 수 있으며, 비밀번호를 입력하면 업데이트를 진행합니다.

    그리고나서 다음 명령어로 GNU 컴파일러와 GDB 디버거를 설치합니다.

    sudo apt-get install build-essential gdb

    설치 중간에 계속 진행하겠냐고 물어봅니다. y를 입력하여 계속 진행합니다.

    Y 또는 y 입력

    설치가 완료되면 다음 명령어를 입력해봅니다.

    whereis g++
    whereis gdb

    정상적으로 설치가 됐음을 확인할 수 있습니다.

    이제 폴더를 생성하고 우분투에서 VS Code를 실행해보겠습니다.

    저는 알고리즘 공부를 하기 위한 디렉토리를 만들었습니다.

    mkdir algorithm
    cd algorithm/
    mkdir CppProjects
    cd CppProjects/
    code .

    마지막 줄 code .을 입력하면 현재 디렉토리에서 VS Code가 실행됩니다.

    hi.cpp 파일을 만들어서 예제를 입력합니다.

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main()
    {
       vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
    
       for (const string& word : msg)
       {
          cout << word << " ";
       }
       cout << endl;
    }

    저장을 하고나서 빌드를 하기 위한 task.json파일을 만듭니다.
    ctrl+shift+p를 눌러 C/C++이라고 입력하거나, 상단에 있는 Terminal -> Configure Default Build Task를 누르면 파일 리스트가 나타납니다.

    여기서 g++ build active file을 선택합니다.

    선택을 하면 왼쪽에 .vscode폴더 아래에 task.json이 생성된 것을 확인할 수 있습니다.
    task.json파일은 다음과 같습니다.

    {
      "version": "2.0.0",
      "tasks": [
        {
          "type": "shell",
          "label": "g++ build active file",
          "command": "/usr/bin/g++",
          "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
          "options": {
            "cwd": "/usr/bin"
          },
          "problemMatcher": ["$gcc"],
          "group": {
            "kind": "build",
            "isDefault": true
          }
        }
      ]
    }

    이제 hi.cpp에서 ctrl+shift+b를 눌러 실행해봅니다.

    터미널창에서터미널 창에서 빌드가 성공한 것을 확인할 수 있습니다. 터미널 창에서 엔터를 누른 후 다시 터미널을 열어서 우분투에서 실행할 수 있습니다.

    이제 디버깅을 하기위한 launch.json파일을 생성합니다.
    F5를 누르면 상단에 C++ (GDB/LLDB)와 기타 등등이 뜹니다. C++ (GDB/LLDB)를 선택해줍니다.

    그럼 이제 여러 파일이 나타날 텐데, g++ - Build and debug active file을 선택합니다.

    task.json파일처럼 .vscode폴더 아래에 launch.json파일이 생성됩니다.

    launch.json파일의 내용은 다음과 같습니다.

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "g++ build and debug active file",
          "type": "cppdbg",
          "request": "launch",
          "program": "${fileDirname}/${fileBasenameNoExtension}",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${workspaceFolder}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "gdb",
          "setupCommands": [
            {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
            }
          ],
          "preLaunchTask": "g++ build active file",
          "miDebuggerPath": "/usr/bin/gdb"
        }
      ]
    }

    8번 라인에 중단점을 찍고 F5를 눌러 디버깅을 시작합니다.

    F10을 누르면 다음 상태로 넘어갑니다.


    여기까지 WSL 설치부터 C++컴파일/디버깅 환경설정까지 마쳤습니다.

    댓글