일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 플라스크
- 카카오톡 챗봇
- cloud
- 도커
- 시작
- venv
- vscode
- chatbot
- Lambda
- nohub
- GQL
- Python
- 챗봇
- 파일권한
- jinja2
- gcp
- docker
- ssh
- 운영체제
- 카카오 오픈빌더
- flask
- 클라우드
- graphQL
- 구글클라우드
- 노션
- braces
- AWS
- OS
- Mac
- Windows
- Today
- Total
ForFour
Visual Studio Code에서 C/C++ 개발환경 세팅하기 본문
VScode 에서 C/C++시작하기
사전확인
두 개 설치되어있나 확인한다. g++은 컴파일/빌드에, lldb는 디버깅하는 데 필요한 툴이다.
VSCode 설치하기
아래의 사이트를 통해 VSCode를 설치한다. 본인은 맥을 사용중.
확장자 설치
아래의 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파일이 자동으로 생성된다.
이제 디버깅 창에서 디버깅이 가능해졌다.
참고
'개념 챙기기' 카테고리의 다른 글
[데이터베이스]인덱스(index)란? (0) | 2021.06.18 |
---|---|
[운영체제]Linux rm command 근데 이제 rf를 곁들인.. (0) | 2021.05.12 |
쉘 스크립트(shell script) 기본 문법 (0) | 2021.01.28 |
[운영체제] Kernel과 Shell (0) | 2021.01.26 |
AWS 서비스 종류 (0) | 2021.01.08 |