오늘은 C/C++ 공부에 앞서 VSCode를 기반으로한 개발환경 세팅을 해보려고 합니다.

 

우선 맥에 VSCode를 깔아주세요.

 

VSCode 설치 주소

https://code.visualstudio.com

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

Visual Studio Code 홈페이지

 

"Download for Mac" 클릭후 설치 진행해주세요.

 

설치가 완료되면 아래처럼 창이 뜹니다.

Visual Studio Code 시작화면

 

VSCode는 컴파일러, 디버거 등이 설치되어있지 않기때문에 직접설치를 해줘야합니다. 어떻게 보면 굉장히 번거롭겠지만, 이것이 VSCode의 강력한 장점이기도 합니다. 원하는 확장자를 본인이 선택적으로 설치할 수 있기 때문에 프로그램이 굉장히 가볍다는 점이 VSCode의 강점입니다.

 

확장설치자 탭을 클릭해 확장프로그램을 설치하러갑니다.

 

저는 이미 설치가 되어있지만, 여러분들은 C/C++을 검색해서 깔아주셔야합니다.

C/C++ Extension

 

Microsoft사에서 제공하는 익스텐션으로 깔아주면 이제 반절은 완성입니다!

 

이제 작업할 디렉토리를 만들어 주어야 합니다.

이렇게 하면 새로운 작업폴더가 완성됩니다. 이 폴더 안에 앞으로의 작업들을 넣어서 관리하면됩니다.

 

 

다음으로 Visual Studio에서는 컴파일과 디버깅이 기본으로 설정이되어있지만 VSCode에서는 저희가 직접 설정을 해야합니다.

먼저 컴파일부터 알아봅시다.

 

 

 

컴파일설정

우선 컴파일을 설정하기 전에 컴파일할 간단한 C파일을 만들어 봅시다.

Hello.c

#include<stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

이렇게 완성이 됐으면 이제 본격적인 컴파일설정 작업에 들어갑니다.

 

VSCode화면 상단에 "터미널 > 작업구성"을 들어갑니다.

 

그리고 해당폴더에 tasks.json파일을 만들어야 하기 때문에 "탬플릿에서 tasks.json 파일 만들기"로 들어갑니다.

 

우리는 템플릿은 필요없으니 "Others"를 선택하도록 합시다.

 

그러면 이렇게 짠! 하고 tasks.json이 생성됩니다.

tasks.json

 

이 파일은 앞으로 우리가 빌드할 명령어들을 파일로 저장해놓은 형태라고 생각하시면됩니다.

따라서 tasks.json 파일로 원하는 컴파일 명령어들을 만들어 사용자 편의대로 컴파일을 할 수 있다는 것입니다.

 

아래 링크로 들어가면 tasks.json의 자신이 설정할 setting값들을 공식적으로 알려주고있습니다.

https://code.visualstudio.com/docs/editor/tasks

 

Tasks in Visual Studio Code

Expand your development workflow with task integration in Visual Studio Code.

code.visualstudio.com

https://code.visualstudio.com/docs/cpp/config-clang-mac

 

Get Started with C++ and Clang/LLVM in Visual Studio Code on macOS

Configuring the C++ extension in Visual Studio Code to target Clang/LLVM

code.visualstudio.com

 

기본적으로는 밑에 코드를 복사해서 붙여넣주면됩니다.

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "C bulid for clang",
            "command": "clang",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceRoot}"
            },
            "presentation": {
                "clear": true
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        },
        {
            "type": "shell",
            "label": "C++ bulid for clang++",
            "command": "clang++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceRoot}"
            },
            "presentation": {
                "clear": true
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        },
        {
            "type": "shell",
            "label": "execute",
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "group": "test",
            "presentation": {
                "clear": true
            }
        }
    ]
}

 

위의 코드에 대한 간단한 설명을 해드리겠습니다.

type: 명령어의 종류입니다. 저희는 shell타입 명령어입니다.

label: 명령어의 이름입니다. 저희가 직접 원하는대로 작성해주시면 됩니다.

command: 실제로 어떤 명령어를 입력할것인지에 대한 내용입니다. 빌드할때 저희는 clang과 clang++을 사용합니다.

presentation: 터미널에 추가로 입력될 내용을 정합니다. 저희는 빌드할 때마다 터미널을 깔끔히 지워주려고 clear를 사용합니다.

 

나머지는 위에 링크에서 찾아보시면 됩니다.

 

 

tasks.json 파일 수정이 다 끝났으면 이제 빌드를 해주면됩니다.

커맨드(⌘) + 쉬프트(⇧) + B 를 눌러주면 우리가 만들었던 빌드가 나옵니다. 저희는 C파일이기 때문에 "C build for clang"으로 빌드합시다.

 

빌드를 하면 이렇게 파일이 두 개가 생깁니다.

 

Hello.dSYM은 심볼파일으로 디버깅할때 필요한 정보가 들어가있습니다.

Hello는 실행파일입니다.

 

이제 우리는 Hello파일을 실행시켜야 합니다.

 

아까 execuse의 group을 "test"로 했기때문에 "test"의 바로가기를 만들어줘야합니다.

 

왼쪽 상단에보면, Code > 기본설정 > 바로 가기 키 를 눌러줍니다.

 

그리고 검색창에 "test"를 입력해줍니다.

 

작업: 테스트 실행 부분을 키 바인딩해줍니다.

저는 빌드 단축키랑 맞춰서 커맨드(⌘) + 쉬프트(⇧) + R로 했습니다.

 

 

 

 

디버깅 설정

앞서 빌드를 설정했듯이 디버깅도 따로 설정해주어야 합니다.

 

무슨이유인지는 잘 모르겠지만, 저는 기본 lldb가 작동이 안되 따로 Extension을 이용해 lldb를 이용해줄겁니다.

 

제일 유명한 lldb를 이용해줍니다.

이후에 launch.json을 만들어 빌드때와 똑같은 방식으로 진행합니다.

 

launch.json을 만들기 위해선 우선 디버그탭에 들어가서

tasks.json처럼 수정해줍니다.

 

우리는 Extension에서 받은 Code lldb를 이용할것이기 때문에, 밑에 링크를 참조해서 개인에 맞게 디버그 Setting 해줍니다.

https://github.com/vadimcn/vscode-lldb/blob/v1.4.3/MANUAL.md

 

vadimcn/vscode-lldb

A native debugger extension for VSCode based on LLDB - vadimcn/vscode-lldb

github.com

 

이것도 역시나 기본적으로 밑에 코드를 복사하여도 됩니다.

{
    "version": "0.2.0",
    "configurations": [

        {
            "type": "lldb",
            "request": "launch",
            "name": "Lldb debug",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "cwd": "${workspaceRoot}"
        }
    ]
}

 

위에 코드에 대한 간단한 설명을 해드리겠습니다.

name: 디버그의 이름을 말합니다.

program: 실행시킬 프로그램을 지정합니다.

 

나머지는 위에 링크에서 찾아보시면 됩니다.

 

이제 브레이크포인드를 걸고 디버그를 진행하면 됩니다.

 

이상, 여기까지 Mac에서 VSCode C/C++셋팅이였습니다.

'코딩공부 > C&C++' 카테고리의 다른 글

[C++] #02장 Namespace 네임스페이스  (0) 2020.01.08
[C++] #01장 C++의 기본 입출력 cout / cin  (0) 2019.12.23