ForFour

Visual Studio Code에서 C/C++ 개발환경 세팅하기 본문

개념 챙기기

Visual Studio Code에서 C/C++ 개발환경 세팅하기

for_four 2021. 2. 20. 20:03

VScode 에서 C/C++시작하기

사전확인

  • g++ (terminal에 g++ -v로 확인 가능하다.)
  • lldb

두 개 설치되어있나 확인한다. g++은 컴파일/빌드에, lldb는 디버깅하는 데 필요한 툴이다.

VSCode 설치하기

아래의 사이트를 통해 VSCode를 설치한다. 본인은 맥을 사용중.

http://code.visualstudio.com

 

확장자 설치

아래의 Extension 설치하기

 

파일 생성하기

.cpp or .c 파일 생성한다.

SHIFT + ⌘ + B

SHIFT+ ⌘ + B키를 눌러 task.json에 접근하기 or Terminal - Configure Tasks로 접근해도 된다.

*task.json은 빌드하고 실행할 명령어들을 미리 json형태로 저장해 놓은 파일을 말한다.

공식 도큐먼트에 task.json을 어떻게 작성하는지 가이드가 나와있다. 
Clang on Mac OS 부분을 보면 C/C++ 언어는 아래와 같이 작성하라고 안내하고 있다. 

기본적인 의미는 주석으로 설명을 대체한다.

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
		//이 작업이 shell 명령으로 해석되도록 한다.
      "type": "shell",
		//작업에 명칭을 부여한다.
      "label": "clang++ build active file",
		// clang 명령을 수행한다.
      "command": "/usr/bin/clang++",
		// c/c++ 언어를 컴파일/빌드하는 데 필요한 변수
      "args": [
        "-std=c++17",
        "-stdlib=libc++",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": { //디렉토리를 작업폴더로 설정한다.
        "cwd": "${workspaceFolder}"
      },
      "problemMatcher": ["$gcc"],
		//이 작업이 build 명령을 실행할 때 기본적으로 실행되도록 한다.
      "group": { 
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

Visual Studio Code 공식 document에 보면 “Task의 속성에는 다음의 의미가 있다” 라고 나와있다.

 

  • lable: 사용자 인터페이스에 사용되는 태스크의 레이블.(별칭)
  • type: 작업(task) 유형. 사용자 지정 작업의 경우 다음 중 하나일 수 있다. shell 또는 process. 만약 shell 지정된 명령은 셸 명령으로 해석된다(예: bash, ⌘ 또는 PowerShell). 만약 process 지정되어 있으며, 명령을 실행하기 위한 프로세스로 해석된다.
  • command : 실행할 명령.
  • window : Windows 관련 속성. 윈도우즈 운영 체제에서 명령이 실행될 때 기본 속성 대신 사용된다.
  • group : 작업이 속하는 그룹을 정의하세요. 예를 들어, test 그룹에 속한다면 **Command Palette**에서 **Run Test Task**을 실행하여 실행(execute)할 수 있다.
  • presentation : 사용자 인터페이스에서 작업 출력이 처리되는 방법을 정의한다. 예시에서, output을 출력하는 터미널은 `always` 노출되고, 매번 태스크 실행 시 `new`터미널이 생성된다.
  • option : 기본값 cwd (현재 작업 디렉토리), env (계측 변수) 또는 shell (기본 쉘) 재정의(override)한다. 옵션은 task마다 설정할 수 있지만 전역 또는 플랫폼에 따라 설정할 수도 있다.
  • runOptions: task 실행 시기 및 방법 정의
  • lable: 사용자 인터페이스에 사용되는 태스크의 레이블.(별칭)
  • type: 작업(task) 유형. 사용자 지정 작업의 경우 다음 중 하나일 수 있다. shell 또는 process. 만약 shell 지정된 명령은 셸 명령으로 해석된다(예: bash, ⌘ 또는 PowerShell). 만약 process 지정되어 있으며, 명령을 실행하기 위한 프로세스로 해석된다.
  • command : 실행할 명령.
  • window : Windows 관련 속성. 윈도우즈 운영 체제에서 명령이 실행될 때 기본 속성 대신 사용된다.
  • group : 작업이 속하는 그룹을 정의하세요. 예를 들어, test 그룹에 속한다면 **Command Palette**에서 **Run Test Task**을 실행하여 실행(execute)할 수 있다.
  • presentation : 사용자 인터페이스에서 작업 출력이 처리되는 방법을 정의한다. 예시에서, output을 출력하는 터미널은 `always` 노출되고, 매번 태스크 실행 시 `new`터미널이 생성된다.
  • option : 기본값 cwd (현재 작업 디렉토리), env (계측 변수) 또는 shell (기본 쉘) 재정의(override)한다. 옵션은 task마다 설정할 수 있지만 전역 또는 플랫폼에 따라 설정할 수도 있다.
  • runOptions: task 실행 시기 및 방법 정의

각 속성에 대한 요소는 공식 도큐먼트에서 자세하게 확인할 수 있다. 잘 설명된 블로그를 보는 것도 좋지만 도큐먼트를 읽는 습관을 들일 겸 공식 문서를 보는 것이 노이즈 없이 해당 툴이나 기술을 이해할 수 있을 것 같다.


단축어 설정하기

Code - Preferences - Keyboard Shorcuts으로 들어가면 단축키를 설정할 수 있는 창이 뜬다.

여기에서 build와 run을 각각 option + B, R로 설정하여 편하게 빌드하고 실행할 수 있도록 했다.

이제 option+B를 하면 task.json의 group.kind.build가 실행될 것이고, R을 하면 group.kind.test가 실행될 것이다.

 

C/C++파일의 빠른 실행을 위해 task.json파일에 아래의 명령어를 추가하여 option+R을 했을 때 생성된 파일이 실행될 수 있도록 했다. 

실행파일은 확장자 없이 소스코드 파일이름으로 생성된다.

{
	"label": "exec",
	"type": "shell",
	"command": "${fileDirname}/${fileBasenameNoExtension}",
	"group": {
		"kind": "test",
		"isDefault": true
				},
	"problemMatcher": [ 
			"$gcc"
                    ]
}

디버깅 하기

디버깅을 하기 위해서 아까 언급했던 lldb를 이용해야한다. .vscode 폴더에 launch.json을 아래와 같이 생성하거나 디버깅을 실행하면 launch.json파일이 자동으로 생성된다.

이제 디버깅 창에서 디버깅이 가능해졌다.

 

참고

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

Comments