Vscode c언어 컴파일 - vscode ceon-eo keompail

안녕하세요 양햄찌 블로그 주인장입니다.

오늘은 VSCode에서 C/C++ 개발환경 세팅하는 방법에 대해 알아볼거예요.

Visual Studio Code 윈도우 C/C++개발을 위한 설정 세팅

1. 필요한 익스텐션

2. c_cpp_properties.json 수정

3. tasks.json 수정

4. 단축키 설정 및 실행 

1. 필요한 익스텐션 

Vscode c언어 컴파일 - vscode ceon-eo keompail

VSCode에서 C/C++개발을 진행하려면 Microsoft의 C/C++이라는 익스텐션이 필요합니다. Install 해주세요~~~

고러면 C++컴파일러 지정이라던가 개발 관련 여러 설정을 편집할 수 있는 "c_cpp_properties.json"이 생기는데요, 

이를 먼저 세팅해줄 겁니다.

2. c_cpp_properties.json 편집

커맨드 명령어 창 단축키인 F1을 누른 후 'C/C++ edit'을 검색해줍시다.

Vscode c언어 컴파일 - vscode ceon-eo keompail

고럼 요렇게 두 개가 나타나는데 UI는 환경설정을 파일이 아닌 UI로 설정하는거고 JSON은 JSON파일 형태로 설정을 변경하는거예요. 뭘로하든 똑같!

Vscode c언어 컴파일 - vscode ceon-eo keompail

UI를 누르면 이렇게 나옵니다. 저는 JSON으로 변경하도록 할게요.

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "D:/Program Files/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-msvc-x64"
        }
    ],
    "version": 4
}

아무것도 변경 안하고 기본으로 여시면 이렇게 작성되어 있습니다. 

컴파일러가 지금 비주얼스튜디오의 MSVC로 지정되어 있는데, 저는 g++ 컴파일러로 변경해줄거예요.

{
    "configurations": [
        {
            "name": "Win32",
            //추가로 사용할 헤더파일 경로 
            "includePath": [
                "${workspaceFolder}/**",
                "D:/Program Files/msys64/mingw64/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            //컴파일러 경로 mingw의 g++로 변경해주자.
            // "compilerPath": "D:/Program Files/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
            "compilerPath" : "D:/Program Files/msys64/mingw64/bin/g++.exe",
            //C와 C++표준
            "cStandard": "c17",
            "cppStandard": "c++17",
            //인텔리센스도 gcc로 windows-gcc-x64
            // "intelliSenseMode": "windows-msvc-x64"
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

일부로 이해하기 쉬우시라고 주석을 달아놨어요.

확인해야할 항목을 적어볼게요.

Vscode c언어 컴파일 - vscode ceon-eo keompail

윈도우 설정이니까 Win32써주기

Vscode c언어 컴파일 - vscode ceon-eo keompail

경로가 완전 다를 때 C/C++ 라이브러리 인식을 위해 헤더파일 경로에 include 위치를 추가해줬어요.

Vscode c언어 컴파일 - vscode ceon-eo keompail

주석으로 되어있는건 변경하기 전에 기본적으로 세팅되어있던 컴파일러인데요,

저의 경우 mingw64의 g++.exe로 컴파일러를 변경해줬습니다. 

Vscode c언어 컴파일 - vscode ceon-eo keompail

인텔리센스도 msvc가 아닌 gcc모드로 변경해줌~ 개인의 상황에 맞춰 항목을 커스터마이징 하시면 돼요. 다 완료하셨으면 저장! 혹시 몰라서 파일은 따로 첨부해드릴게요.

3. tasks.json 편집

Vscode c언어 컴파일 - vscode ceon-eo keompail

똑같이 F1을 누른 후 Tasks를 검색해보면 'Tasks:Configure Task'라는 커맨드가 검색될거예요. 클릭해줍시다.

Vscode c언어 컴파일 - vscode ceon-eo keompail

tasks.json을 처음 편집하시는 거라면 'Create tasks.json file from template'이 뜰건데 클릭!

Vscode c언어 컴파일 - vscode ceon-eo keompail

요기서 Others를 선택합니다. 그럼 tasks.json 파일이 열릴거예요.

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "echo Hello"
        }
    ]
}

수정하기 전 파일은 이렇게 구성되어 있습니다. C언어와 C++컴파일 그리고 실행까지 명령어 등록을 해볼게요.

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "runner": "terminal",
    "tasks": [
        //C++컴파일
        {
            "label": "g++ build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${fileDirname}\\**.cpp",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": ["$gcc"],
            "group": "build"
        },
        //c컴파일
        {
            "label": "gcc build",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-g",
                "${fileDirname}\\**.cpp",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": ["$gcc"],
            "group": "build"
        },
        //실행
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C", "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ]
        }
    ]
}

완성본~! 요렇게 작성해줍시다. 세부 항목을 차근차근 설명해볼게요.

Vscode c언어 컴파일 - vscode ceon-eo keompail

예시로 C++만 일단 살펴보겠습니다. 구성은 요렇게 되어있는데

[label]

label은 나중에 명령 수행시킬 때 붙일 이름(?)입니다. 

Vscode c언어 컴파일 - vscode ceon-eo keompail

빌드 수행시 어떤 빌드 작업을 실행시킬건지 이렇게 선택지가 나오는데 여기 뜨는 이름을 지정해주는거예요.

g++ build를 선택하면 C++ 컴파일이 수행되고 gcc build를 수행하면 C 컴파일이 되겠죠?

[command]

커맨드는 수행할 명령어를 작성하는 겁니다. C++ 컴파일을 위한 명령어는 g++이고 C언어 컴파일을 위한 명령어는 gcc

실제 명령 프롬프트에서 컴파일 바로 시킬려면 'gcc main.o -c main'이런식으로 명령어 치잖아요.

[args]

명령어 뒤 인자들을 정의합니다. ${fileDirname}은 현재 파일 경로를 의미하고 

${fileBasenameNoExtension}은 현재 파일의 확장자를 제거한 변수명이 들어있어요.

윈도우에서 컴파일이니까 컴파일 결과로 .exe 확장자를 붙여줬습니다.

[problemMatcher, group]

그외 c/c++익스텐션을 사용하니까 컴파일에러가 그 정보에 맞추도록($gcc로 설정하면 c/c++플러그인에게 맡겨지게 됩니다), 그리고 build로 그룹지어서 단축키로 build명령시 수행될 수 있게끔 설정해줬어요. 

"group":{
	"kind":"build",
    "isDefault": true
}

만약 선택하는거 없디 빌드 수행시 디폴트로 특정 task가 수행되게끔 하고 싶으시면 group옵션에다가 "isDefault":true를 추가해주시면 됩니다.

여기까지 하면 끝입니다 완전간단하죵?

4. 단축키 설정 및 실행

편하게 컴파일하고 실행할 수 있도록 단축키를 설정해봅시당. 

단축키 ctrl+k+s를 누르면 '단축키 설정 창'열 수 있어요. 아니면 F1을 누른 후 'Keyboard shortcut'이라고 검색해도 됩니다. 

Vscode c언어 컴파일 - vscode ceon-eo keompail

컴파일&빌드는 workbench.action.tasks.build라고 되어있는 단축키를 확인하시면 됩니다.

디폴트로 빌드는 Ctrl+Shift+B 로 설정이 되어있어요.

Vscode c언어 컴파일 - vscode ceon-eo keompail

실행 명령어 단축키 지정은 명령어ID가 'workbench.action.tasks.test'를 찾아 지정해주시면 됩니다.

저는 빌드는 그대로 ctrl+shift+b를 사용하고, 실행은 ctrl+alt+b로 지정했어요.

#include <iostream> 
using namespace std;
class App
{
public:
    void run(){cout<<"run"<<endl;}
};
int main()
{
    App app;
    app.run();
    return 0;
}

간단하게 소스를 작성해서 컴파일해봅시다. 실행하면 run이 출력되어야해요.

Vscode c언어 컴파일 - vscode ceon-eo keompail

자 지정한 ctrl+shift+b를 누르자 내가 설정했던 빌드 task 두개가 떴어요. cpp니까 g++을 선택해줍시다.

Vscode c언어 컴파일 - vscode ceon-eo keompail

그리고 실행 단축키를 누르니까 내가 지정했던 execute가 뜨네요. 클릭!

Vscode c언어 컴파일 - vscode ceon-eo keompail

빨간색 네모박스가 빌드를 눌렀을 때 나온 커맨드고, 파란색 네모박스가 실행시 나온 커맨드입니다.

의도한대로 명령어가 잘 실행되고 실행하자 run까지 잘 출력된 것을 확인할 수 있어요~

디버깅 설정을 추가적으로 원하시는 분은 아래 포스팅을 참고해주세요

[VSC 비주얼스튜디오코드] VScode에서 C/C++ 디버깅하는 방법, 디버깅 실행 안될 때 설정 (tistory.com)

오늘 포스팅은 여기까지입니다. 도움이 되셨다면 공감 어떤가요? 감사합니다.