<WSL> VS Code, C/C++ 환경설정
<Pre-work> WSL 환경설정
Step 1. WSL에 C/C++ 컴파일러(GCC)설치
우분투에 C/C++ 프로그래밍 언어를 사용하기 위해 GCC 컴파일러와 GDB 디버거를 설치합니다.
개발에 필요한 필수 패키지를 설치한다고 생각하시면 됩니다.
01. 데비안 패키지 리스트 업데이드 && 업그레이드
sudo apt-get update && sudo apt-get upgrade -y
02. gcc, gdb 설치
sudo apt-get install build-essential gdb -y
build-essential 패키지는 데비안 계열의 리눅스 플랫폼에서 개발에 필요한 패키지를 묶음을 의미합니다.
build-essential 패키지를 설치하면 GCC, G++ 등 리눅스 개발에 필요한 도구를 설치합니다.
03. gcc 설치 확인
gcc -v
04. gdb 설치 확인
gdb -v
Step 2. Visual Studio Code 설치
우선, Windows 환경에서 VS Code 를 설치합니다.
VS Code 에디터가 설치되어 있다면, Step 2. 단계로 넘어가세요.
01. VS Code 다운로드
02. VS Code 설치
03. VS Code 가 정상적으로 설치되면, 아래 이미지처럼 실행됩니다.
Step 3. Visual Studio Code - Extention 설치
01. WSL Extention 설치
VS Code 를 실행시, 아래 이미지처럼 우측 하단에 WSL Extention 설치 안내가 자동으로 팝업됩니다.
02. 자동으로 WSL Extention 설치 안내가 팝업되지 않는다면, 확장 프로그램 관리에서 검색하여 설치합니다.
VS Code → Extentions → WSL
03. VS Code 에서 WSL 원격 연결
04. VS Code Extentions → C/C++ Extension Pack
05. VS Code 한국어 설정
06. VS Code 를 종료하고, 다음 단계를 진행하세요.
Step 4. C/C++ 작업 경로 설정
01. C/C++ 소스코드를 작업할 프로젝트 폴더를 생성합니다.
- mkdir = make directory = 프로젝트 폴더 생성 (원하는 폴더명을 사용합니다.)
mkdir projects
- cd = change directory = 경로 이동, 생성한 폴더 경로로 이동합니다.
cd projects
02. C/C++ 소스코드를 작업할 프로젝트 경로로 이동하여 VS code를 실행합니다.
3. C/C++ 테스트 코드를 생성합니다.
HelloWorld1.c 테스트 코드
#include <stdio.h>
int main()
{
printf("Hello, C World!\n");
printf("__STDC_VERSION__ = %ld\n", __STDC_VERSION__);
return 0;
}
HelloWorld2.cpp 테스트 코드
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, C++ World!" << endl;
std::cout << "__cplusplus = " << __cplusplus << std::endl;
return 0;
}
Step 5. C/C++ 사용 환경 설정
C/C++ 의 버전 및 사용할 컴파일러 등을 설정합니다.
C/C++: 구성 편집(UI) 를 사용해 JSON 설정 파일을 생성합니다.
01. 구성 편집(UI) 실행
① Ctrl + Shift + p 단축키를 눌러서 VS Code 명령어 팔렛을 활성화합니다.
② 아래 키워드로 검색하여 < C/C++: 구성 편집(UI) > 을 찾아 선택합니다.
③ UI로 설정한 부분은, json 파일로 자동 변경됩니다.
④ .vscode 폴더의 c_cpp_properties.json 파일에서 확인 할 수 있습니다.
백업된 JSON 설정 파일이 있다면, 구성 편집 선택시 < 구성 편집(JSON) > 으로 작업합니다.
Step 6. C/C++ 빌드 환경 설정
01. 기본 빌드 작업 설정 파일 생성
이전 단계에서 테스트 코드를 빌드 했다면, 아래처럼 tasks.json 파일이 기본값으로 생성됩니다.
tasks.json 파일이 없다면, Ctrl + Shift + P → Tasks: Configure Default Build Task 입력 후 선택합니다.
Tasks: Configure Default Build Task
02. task.json 파일에 아래 빌드 설정 json 코드를 붙여 넣습니다.
{
"version": "2.0.0", // task.json 파일 형식 버전
"runner": "terminal",
"type": "shell", // 터미널 유형: process, shell, cppbuild
"echoCommand": true, // 실행 명령 터미널 출력 여부
"presentation": {
"reveal": "always" // 실행 중 출력 창 항상 표시 여부
},
// 빌드 작업 실행할 목록 작성
"tasks": [
// make Debug directory
{
"label": "mkdir Debug",
"command": "mkdir",
"args": [
"-p", // 하위 경로에 Debug 와 동일 디렉토리 없을때만 생성하는 mkdir 명령 옵션
"Debug"
]
},
// C++ build task
{
"label": "save and build for C++",
"dependsOn":[ // 작업공간 하위 경로에 Debug 폴더 만들기
"mkdir Debug"
],
"dependsOrder": "sequence",
"command": "g++", // G++ (GNU C++ Compiler) 실행 명령
"args": [ // 실행할 명령어에 넘길 매개변수입니다.
"-g",
"${file}",
"-o", // g++ 명령 옵션 output
"${workspaceFolder}/Debug/${fileBasenameNoExtension}"
//, "-std=gnu++11" // (opt) 특정 컴파일러 버전 선택 활성화
],
"options": {
"cwd": "/usr/bin"
},
"group": "build", // 단축키 설정에서 "workbench.action.tasks.build" 의 build 그룹을 의미한다. 아래 C 빌드도 같은 그룹이다.
// workbench.action.tasks.build 그룹이 아닌, g++ 컴파일러를 자동으로 실행시킬 때, 대신 활성화합니다.
//"group": {
// "kind": "build",
// "isDefault": true
//},
"problemMatcher": { // 컴파일러마다 Warning, Error 출력 규칙이 다릅니다.
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"detail": "wsl g++ build "
},
// C build task
{
"label": "save and build for C",
"dependsOn":[
"mkdir Debug"
],
"dependsOrder": "sequence",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${workspaceFolder}/Debug/${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
}
}
},
// 바이너리 실행(Ubuntu, WSL)
{
"label": "execute",
"command": "${fileDirname}/Debug/${fileBasenameNoExtension}",
"group": "test"
}
]
}
Step 7. 빌드, 실행 단축키 설정
01. [ 빌드, 실행 ] 단축키를 변경합니다.
① Ctrl + Shift + p 단축키를 눌러서 VS Code 명령어 팔렛을 활성화합니다.
② 아래 키워드로 검색하여 선택합니다.
open keyboard shortcuts (JSON)
02. 빌드, 실행 단축키 변경
빌드: ctrl+alt+c 단축키
실행: ctrl+alt+r 단축키
[
// 빌드, tasks.json 파일의 "group": "build"
// 빌드 기본 단축키 : ctrl+shift+b (동일 기능이지만 한손 누르기 힘듦)
{
"key": "ctrl+alt+c",
"command": "workbench.action.tasks.build"
},
// 실행, tasks.json 파일의 "group": "test"
{
"key": "ctrl+alt+r",
"command": "workbench.action.tasks.test"
}
]
03. 기본 터미널 선택
>terminal select default profile
04. VS Code 재실행
변경된 설정을 적용시키기 위해 VSCode를 재실행합니다.
Step 8. C/C++ 빌드, 실행 테스트
01. C 빌드 테스트
① C 언어로 작성된 소스코드에서 Ctrl + Alt+ c 단축키를 눌러서 빌드를 실행합니다.
② Step 6. 에서 작업한 Task.json 파일 설정 중, save and build for C 를 선택합니다.
③ 설정한 빌드 명령어가 동작하여 실행 파일을 생성합니다.
④ C 언어로 작성된 소스코드를 빌드하여 실행 파일이 생성됩니다.
02. C++ 빌드 테스트
① C++ 언어로 작성된 소스코드에서 Ctrl + Alt+ c 단축키를 눌러서 빌드를 실행합니다.
② Step 6. 에서 작업한 Task.json 파일 설정 중, save and build for C++ 을 선택합니다.
③ 설정한 빌드 명령어가 동작하여 실행 파일을 생성합니다.
④ C++ 언어로 작성된 소스코드를 빌드하여 실행 파일이 생성됩니다.
03. C 실행 테스트
C 언어로 작성된 소스코드에서 실행 단축키인 Ctrl + Alt + R 을 사용합니다.
빌드된 파일이 실행됩니다.
04. C++ 실행 테스트
C++ 언어로 작성된 소스코드에서 수정한 실행 단축키인 Ctrl + Alt + R 을 사용합니다.
빌드된 파일이 실행됩니다.
C표준 | __STDC_VERSION__ | C++ 표준 | __cplusplus |
c99, gnu99 | 199901 | C++98 | 199711L |
c11, gnu11 | 201112 | C++11 | 201103L |
C++14 | 201402L | ||
c17, gnu17 | 201710 | C++17 | 201703L |
C++20 | 202002L | ||
C++23 | TBD (202100L) |