본문 바로가기
일상/공부

[ C언어 ] vscode에서 C언어 사용하기 2탄 - window

728x90
반응형

C/C++ extention 다운로드하기


왼쪽 사이드바의 네모 아이콘 클릭 후 C/C++ 을 검색해 extension 다운로드하기

C/C++ extention 다운로드하기
C/C++ extention 다운로드하기

 


작업폴더, C파일 만들기


작업폴더 만들기

우선 작업 폴더를 하나 만든다. 

폴더 이름은 아무거나 상관없지만 한글이 들어가면 경로 오류가 생길 수 있기 때문에 영어로 쓰자!

작업폴더 만들기
작업폴더 만들기

나는 깃허브랑 연결을 해두었기 때문에 readme 파일과 ginignore 파일이 있는데 아무것도 없는 게 정상이다.

 

 

C 파일 만들기

확장자 명을 c로 해서 파일을 만든다

프로젝트 안에 폴더를 하나 더 생성하고 그 안에 소스파일을 만들었다.

C 파일 만들기
C 파일 만들기

 


json 파일 설정하기


vscode에서 C나 C++을 사용하려면 작업중인 폴더 안에 아래의 json파일 3개를 설정해야한다.

그래야 제대로 빌드와 디버깅을 할 수 있다.

  • c_cpp_properties.json: 컴파일러가 설치된 경로를 설정하고, 빌드 기본 옵션들을 설정하는 파일
  • launch.json: 기본 빌드 구성을 설정하는 파일
  • task.json: 디버깅을 위한 구성 파일

 

c_cpp_properties.json 설정하기

c_cpp_properties.json은 C/C++ extention의 설정파일이다.

visual studio code에서 어떤 컴파일러를 사용할 것인지 설정을 해주어야 C/C++ extention이 task.json과 launch.json의 템플릿을 만들어준다.

 

F1을 클릭하여 팔레트를 연 후, C/C++ Edit Configuraions (UI)  (C/C++ 구현 편집 (UI)) 를 클릭한다. 

C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)

 

 

설정화면에서

순서대로

 

  • Configuration name(구성이름): win32
  • Compiler path(컴파일러 경로): c:/mingw/bin/g++.exe
  • IntelliSense: gcc-x64
  • C standard: gnu11
  • C++ standard: gnu++14

로 설정하고 나머지는 다 그대로 둔다. 

C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)
C/C++ Edit Configuraions (UI)

 

 

설정이 끝나면 .vscode 폴더 안에 c_cpp_properties.json 파일이 생성된 것을 볼 수 있다.

c_cpp_properties.json
c_cpp_properties.json

 

tasks.json 파일 생성 및 설정하기

C파일을 열어두고(반드시 !!!) Ctrl + Shift + B 버튼을 누른다

아래와 같은 화면이 뜨면 C/C++: g++.exe 옆의 톱니바퀴를 클릭한다. 

C/C++: g++.exe
C/C++: g++.exe

 

tasks.json 파일 생성
tasks.json 파일 생성

 

다 되었다면 task.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": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "디버거에서 생성된 작업입니다."
        }
    ]
}

 

 

 

launch.json 파일

c파일을 열어둔 상태에서 run(디버그) > add configuration(구성 추가)

add configuration
add configuration

 

C++ (GDB/LLDB) 선택

C++ (GDB/LLDB)
C++ (GDB/LLDB)

 

launch.json 파일이 만들어진다. 

launch.json 파일
launch.json 파일

 

 

코드도 수정해주자. 

{
    "version": "0.2.0",
    "configurations": [
    
        {
            "name":"(gdb)시작",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "gdb에 자동 서식 지정 사용",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

결과화면!

이제부턴 C언어 공부한 것 깃허브에 올리고, 얼른 자료구조 공부해야지!

결과화면
결과화면

반응형