vscode C/C++ 개발환경 셋팅

ROK·2022년 7월 11일
2

원래 잘 쓰고 있던 vscode를 에러가 너무 많이 발생해서 갈아엎었다.

전에도 한번씩 갈아엎은 적은 있지만 매번 그럴때마다 인터넷을 찾아보며 환경을 세팅했는데 다음을 위해서 블로그에 작성해 놓으려고 한다.

인터넷 검색하며 나한테 필요한 것들만 이것저것 모아둬서 순서나 내용이 이상할 수도 있습니다.
또한 Windows10을 기준으로 작성하였고, 필요할 때마다 추가할 예정

1. C/C++ Extension Pack

일단 가장 중요한 C/C++ Extension Pack이다

2. mingw64 설치

보통 MinGW를 설치하라고 하던데 난 저거 설치했다가 이상하게 프로그램이 꼬여버려서 안할려고 한다
MinGW와 MinGW-w64의 차이는 나도 잘 모르겠다
다만 링크한 블로그를 가면 대략적으로 이런차이가 있구나 해서 참고하면 될 것 같다.
암튼 MinGW-w64가 더 낫다고 한다. (아님 말고)

그래서 MinGW-w64를 다운받아서 C 드라이브에 넣어준다

그리고 환경 변수를 설정해줘야 한다.

환경변수

왼쪽 아래 검색 -> 시스템 환경 변수 편집 -> 환경 변수 -> 시스템 변수의 PATH 편집 -> 새로만들기 -> C:\mingw64\bin 추가

확인하기

이제 추가를 다 했으면 cmd 창을 열어서 gcc -v 또는 g++ -v를 입력해서 버전을 확인한다.

버전이 나오면 제대로 설치된 것이다.

3. vscode 빌드 설정

이제 컴파일러는 모두 설치했다. 이제 vscode로 가서 설정할 시간이다.

일단 초기 설정으로는 ctrl + shift + B를 누르면 빌드 작업을 찾을 수 없다는 알림이 뜬다. 그거를 클릭한다.

아니면 터미널에서 기본 빌드 작업 구성... 을 눌러도 된다

그럼 이제 템플릿에서 task.json을 누른다

그럼 이제 tasks.json 파일에 붙여넣자

{
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation" : { "reveal": "always" },
    "tasks": [
          //C++ 컴파일
          {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",

            //컴파일시 에러를 편집기에 반영
            //참고:   https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher

            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    // The regular expression.
                  //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        //C 컴파일
        {
            "label": "save and compile for C",
            "command": "gcc",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",

            //컴파일시 에러를 편집기에 반영
            //참고:   https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher

            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    // The regular expression.
                  //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        // 바이너리 실행(Ubuntu)
        // {
        //     "label": "execute",
        //     "command": "${fileDirname}/${fileBasenameNoExtension}",
        //     "group": "test"
        // }
        // 바이너리 실행(Windows)
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C", "${fileDirname}\\${fileBasenameNoExtension}"
            ]
   
        }
    ]
}

4. 단축키 설정

이제 단축키 설정을 해서 편하게 하자

파일 -> 기본설정 -> 바로 가기 키 (ctrl + k, ctrl + s)누르면 바로 됨

바로가기 키에서 저 표시를 누르면 keybindings.json 파일이 열린다.

// Place your key bindings in this file to override the defaults

[
    // 컴파일
    {
        "key": "ctrl+alt+c",
        "command": "workbench.action.tasks.build"
    },
    // 실행
    {
        "key": "ctrl+alt+r",
        "command": "workbench.action.tasks.test"
    }
]

또 복사 붙여넣기를 하자

5. 구성 편집

ctrl + shift + P 눌러서 상단에 C/C++을 입력한 후 나오는 구성 선택을 선택한다.

구성 이름

윈도우니까 Win32

컴파일러 경로

앞의 과정을 잘 지나왔다면 mingw64의 컴파일러 3개가 인식된다.

C는 gcc, C++은 g++을 선택하면 된다. 두 언어 다 사용한다면 g++을 선택해도 되긴하다고 함(확실하지는 않음)

IntelliSense 모드

보통 일반적인 윈도우 64비트는 windows-gcc-x64를 선택하면 된다.

경로 포함

이거는 추가로 사용할 헤더파일의 경로를 추가하는 거라고 한다
지금 당장은 쓸 일이 없으니 패스한다.

C/C++ 표준

이거는 그냥 기본으로 변경 안하고 사용함

5. 터미널 변경

이제 거의 다 했다
ctrl + shift + P '터미널 ; 기본 프로필 선택'을 선택

(되어 있을 수도 있다.)
Command Prompt를 선택한다.

이제 코드로 가서 ctrl + alt + C를 누르고 save and compile for C를 선택하면 된다

성공적으로 컴파일되면 디렉터리에 .exe파일이 생성되고,

ctrl + alt + R을 누르면 .exe 파일이 실행된다.

6. 디버깅하기

위 과정은 C/C++을 컴파일하고 실행하는 과정이다.

지금 나한테 가장 필요한 것은 디버깅이다.
(디버깅 때문에 갈아엎었으니까)

디버깅을 위해서는 위 작업 일부를 수정해야한다.
.vscode 폴더의 tasks.json 파일을 열어 컴파일할 때 디버그 정보를 포함하도록 한다


위 빨간 네모를 추가해주면 된다.

7. 디버깅 테스트

이제 테스트를 해볼 시간이다

C++ 디버깅

C++을 먼저 디버깅해보자

// main.cpp
#include <iostream>

using namespace std;

int c = 0;
int d = 100;

int main()
{
    int a = 2;
    int b = 2;
    int c = a + b;

    cout << a << " + " << b << " = " << c << endl;

    return 0;
}

5번 라인에 중단점을 선택하고 F5를 클릭하고, C++(GDB/LLDB)를 선택한다.

그리고 C++이기 때문에 g++ 활성 파일 빌드 및 디버그를 클릭하면 된다.

그렇게 하면 이제 디버깅이 잘 된다

F11을 누르면 다음으로 넘어갈 수 있고 제대로 잘 작동한다.

그리고 조사식에 보고 싶은 값을 +를 눌러 입력하면 볼 수 있다
(원래는 조사식에 아무것도 없었음)

C 디버깅

코드

#include <stdio.h>

int c = 0;
int d = 100;

int main()
{
    int a = 2;
    int b = 2;
    int c = a + b;

    printf("%d+%d=%d", a, b, c);

    return 0;
}

C++과 동일하게 아주 잘 되는 것을 볼 수 있다.

뭔가 아래 터미널에 Error 라는 글과함꼐 뭐가 떠서 에러인가 했는데 이건 에러가 아니라고 한다.

저거 때문에 엎었는데 에러가 아니라니.... 하루 날렸다....

참고 블로그

https://rasino.tistory.com/307
https://webnautes.tistory.com/1158

위 두 블로그를 보고 참조하고 따라서 잘 했다

아래 블로그의 경우 더 나아가 cmake를 사용해 둘 이상의 소스 코드 파일로 구성된 프로젝트 컴파일 방법이 나오는데
지금 당장은 나에게 필요한게 아니기 때문에 귀찮아서 조금 미뤄놨다.
나중에 필요하면 하는 걸로

profile
하루에 집중하자

0개의 댓글