본문 바로가기
IT SW 지식 및 기타/개발환경

VS Code에서 C++ 개발 환경 구축하기

by 혀니쌤1 2023. 12. 17.

목차

    C/C++를 코딩할 때에는 Visual Studio(보라색리본)을 사용하는 것이 제일 정석적인 방법이겠지만.

    현재 나는 C/C++로 전문적인 개발을 하려는 것이 아니라, 단순히 PS(Problem Solving)을 하며 기본기를 익히려 하는 단계다. 그래서, 새로운 설치 없이 기존에 사용하고 있는 Visual Studio Code에 개발 환경을 셋업하려 한다.

     

     

    컴파일러 설치

    MinGW 프로그램 설치

    MinGW는 C/C++의 컴파일러이다. 자바를 컴파일 할려면 JDK를 설치하듯이, C/C++를 하려면 MinGW를 설치해야한다.

    아래 링크에 들어가서 설치파일을 다운받고 실행하자. 

     

    MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net

    Unified, cloud-based test automation platform, powered by AI For Testers, QAs, and SMEs in cross-functional development teams

    sourceforge.net

     

     

     

    다음 다음을 누르면서 진행하다보면 아래와 같은 체크박스 선택창이 나오는데, 화면에 보이는 것을 선택하자.

    ada나 포트란 오브젝티브C 등을 제외하고 설치하겠다고 해주는 것이다.

    선택을 다 했으면 왼쪽 상단 Installation 메뉴 클릭 → Apply Changes를 클릭한다.

    그러면 다시 한 번 결정을 확정하겠냐는 질문이 뜨고 Apply 버튼을 눌러주게 되면 드디어 설치가 시작된다.

     

     

    몇 분 정도 시간이 걸리며 설치가 완료되면 C드라이브에 MinGW폴더가 생긴 것을 확인할 수 있다.

     

     

    환경 변수 추가

    위에 C드라이브 경로에 생긴 MinGW를 윈도우 환경 변수에 등록을 해주어야한다.

    그래야 C/C++를 컴파일 할 때, 컴퓨터가 MinGW를 어디서 어떻게 사용하는 지 알 수 있다.

    환경 변수 편집창을 들어가서, 시스템 변수 Path를 편집해주자.

    새로만들기 버튼을 누른 뒤 아까 MinGW가 생성되었던 경로에 bin을 붙여 추가해주면 된다.

    C:\MinGW\bin

     

     

    설치 결과 확인

    설치가 잘 끝났는지 확인하기 위하여, cmd창을 열고 gcc -v를 쳐준다.

    에러가 뜨지 않고 무리 없이 여러 정보와 함께 gcc의 버전이 6.3.0이라는 것이 나타난다. :-)

     

     

     

     

    IDE 셋업

    확장프로그램 설치

    비쥬얼 스튜디오 코드 확장프로그램 3가지를 설치한다.

    code runner,  C/C++,  C/C++ extension pack

     

     

    빌드 테스크 구성

     

    왼측 상단 터미널 메뉴를 클릭하고 빌드 작업 구성을 들어간다. (단축키 cntrl shift B를 누르라는 가이드도 있는데, 이는 IDE 단축키 환경마다 다를 수 있다.)

    No bulid task to run found. Configure Build Task라는 말이 뜰 것인데 클릭한다.

    Create task.json file from template을 클릭한다. 이후 MSBuild라는 말도 클릭한다.

     

     

    task.json이란 파일이 수정모드로 뜰 것이다. 아래 더보기란에 내용으로 덮어씌운다.

    더보기 란에 있는  json파일은 대부분의 경우 수정이 불필요하니 그대로 덮어씌우면 되긴 하는데...

    다만 이 부분은 꼭 확인하자, 내 MinGW가 어디에 설치 되었는지, 필자처럼 C드라이브 바로 아래인지?

    왜냐면 json 파일을 읽어보면 command : C:\\MinGW\\bin\\gcc.exe 라고 되어있기 때문이다.

    더보기

     

    {
        "version": "2.0.0",
        "runner": "terminal",
        "type": "shell",
        "echoCommand": true,
        "presentation": {
            "reveal": "always"
        },
        "tasks": [
            {
                "label": "save and compile for C++",
                "command": "g++",
                "args": [
                    "${file}",
                    "-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}",
                    "-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"
            }
        ]
    }