Language & Tool/C++

05 Visual Studio Code C/C++ 개발 환경 구축

Orangetasteboy 2023. 7. 10. 11:30

Compiler 설치

아래의 링크에서 설치파일을 받아 설치를 진행한다.

https://sourceforge.net/projects/mingw/files/

 

설치 완료 후, Continue 버튼을 누르면 Installation Manager 화면이 나타난다. 이 화면에서 필요한 패키지를 설치한다.

 

mingw-developer-toolkit에 마우스 우클릭하여 mark for installation을 클릭해준다.

결과적으로 msys-base는 자동 체크된다.

 

mingw32-base ming232-gcc-g++도 체크해주어 총 4개 항목이 체크되도록 한다.

좌측 상단의 Installation에서 Apply Changes를 클릭하여 체크한 패키지들을 설치한다. 이후에 나오는 창은 Apply 버튼을 눌러준다. 설치가 완료되면 Close 버튼을 누른다.

 

윈도우 검색창에서 시스템 환경 변수 편집을 검색하여 열어준다.

 

시스템 속성 > 고급 > 환경 변수를 열어준다.

 

사용자 변수의 Path를 더블 클릭하여 환경 변수 편집 창을 열어준다.

 

이전에 설치한 MinGW가 설치된 디렉토리의 \binPath로 추가한다.

환경 변수 편집 이후에 재부팅을 한다.

 

설치 확인을 위해 윈도우키 + R키를 눌러 실행창을 실행시키고 cmd를 입력하여 커맨드 창을 연다.

 

커맨드 창에서 gcc -v 명령어를 입력하여 gcc 버전을 확인한다.

컴파일러 설치가 완료되었다면 하단에 gcc 버전이 정상적으로 출력된다.

 

 

C/C++ 확장팩 설치

Visual Studio Code를 실행하고 좌측의 확장 아이콘을 클릭하여 “C/C++”를 검색한 후, “C/C++”를 설치한다. “C/C++ Expansion Pack”도 추가로 설치한다.

 

 

C++ 테스트 프로젝트 생성

Visual Studio Code를 실행하고 좌측 상단의 탐색기 버튼을 클릭하고 폴더 열기를 클릭하여 사용할 폴더를 찾는다.

 

폴더 열기를 클릭하면 윈도우 탐색기창이 활성화되고, 테스트를 위해 “test” 폴더를 생성하여 선택한다.

탐색기에서 “test” 폴더를 선택한 후, “새 폴더버튼을 눌러 “src” 폴더를 추가한다.

“src” 폴더를 선택한 후, “새 파일버튼을 눌러 “main.cpp” 파일을 추가한다.

 

추가된 “main.cpp” 파일에 아래의 코드를 작성하여 빌드와 컴파일이 되지 않는 C++ 프로젝트 설정을 완료한다.

# include <iostream>

using namespace std;
int main()
{
    cout << “Hello World!” << endl;

    return 0;
}

 

 

Visual Studio 빌드 설정

[작업 구성]

Visual Studio Code의 좌측 상단의 메뉴 > 터미널 > 작업 구성을 클릭한다.

 

템플릿에서 tasks.json 파일 만들기” > “Others” 를 선택한다.

 

폴더에 “.vscode” 폴더가 생성되고, 안에 “tasks.jason” 파일이 생성된다.

 

생성된 “tasks.json” 파일에 아래의 코드를 작성한다.

{
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation": {
        "reveal": "always"
    },
    "tasks": [
        {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                “-g”,
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "save and compile for C",
            "command": "gcc",
            "args": [
                "${file}",
“-g”,
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C",
                "${fileDirname}\\${fileBasenameNoExtension}"
            ]
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "디버거에서 생성된 작업입니다."
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
//            "group": {
//               "kind": "build",
//                "isDefault": true
//            },
            
            "detail": "디버거에서 생성된 작업입니다."
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
              
            // "group": {
            //     "kind": "build",
            //     "isDefault": true
            // },

            "detail": "컴파일러: C:\\MinGW\\bin\\gcc.exe"
        }
    ]
}

 

 

[C/C++ 확장 기능 설정]

이전에 설치한 C/C++ 확장 기능을 작업 구성에 맞게 설정하기 위해 Ctrl + Shift + P를 눌러 명령 팔레트를 열어서 “C/C++”을 검색한 후, “C/C++ 구성 편집을 선택한다.

 

“.vscode” 폴더에 “c_cpp_properties.json” 파일이 생성되고, 구성 편집이 가능한 페이지가 나타난다. 해당 페이지에서 수정을 하면 “c__cpp_properties.json”이 갱신된다.

구성 편집 페이지에서 “compilerPath" "C:/MinGW/bin/g++.exe", "cStandard""gnu11", "cppStandard" "gnu++14", "intelliSenseMode" "windows-gcc-x64"로 입력한다.

 

 

[단축키 설정 및 빌드]

파일 > 기본 설정 > “바로 가기 키선택 > 우측 상단의 바로 가기 키 열기클릭 > keybingings.json에 아래 소스 코드 붙여넣기 > Ctrl + s를 눌러서 저장한다.

“Ctrl + Alt + C”를 빌드 단축키, “Ctrl + Alt + R”을 실행 단축키로 지정된다.

// 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"
    }
]

 

Ctrl + Alt + c를 누르고 “save and compile for C++ 선택하여 빌드한다.

 

Ctrl + Alt + R을 눌러서 실행한다. 터미널을 확인하면 “Hello World!”가 정상적으로 출력된 것을 확인할 수 있다.

 

 

[디버깅 설정]

좌측의 실행 및 디버그를 선택하고 “launch.json 파일 만들기를 클릭한 뒤, “C++(GDB/LLDB)”를 선택하여 “launch.json” 파일을 생성한다.

 

“main.cpp” 파일에 아래의 소스 코드를 입력하고, 디버깅 테스트를 위해 5번 라인에 중단점을 선택하고 F5를 누른 다음, “C++(GDB/LLDB)”를 선택한다.

#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;
}

 

C++ 디버그 확인을 위해 “C/C++: g++.exe 활성 파일 빌드 및 디버그를 선택한다.

F11을 누르면 다음으로 넘어갈 수 있고 정상적으로 디버깅되는 것을 확인한다.