[WSL2] VSCode, C/C++ ํ๊ฒฝ์ค์

MSDN ๊ณต์๋ฌธ์, VSCode ๊ณต์๋ฌธ์
<Pre-work> WSL ํ๊ฒฝ์ค์
01. WSL ์ค์น
WSL2 ํ๊ฒฝ์ค์
[WSL ๊ณต์๋ฌธ์], [WSL ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ]Step1. ์๋์ฐ์์ WSL ํ์ฑํ๋๋ณด๊ธฐWindow + S ๋จ์ถํค๋ฅผ ๋๋ฅด๋ฉด, ๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฑํ ๋ฉ๋๋ค.์๊ฒ์์ด๋ก ํค์๋ ์ ๋ ฅํ๋ฉด ๊ฒ์๋ ๋ฅผ ์คํํฉ๋๋ค., ์ฒดํฌ โ ํ์ฌ ํ
basiclike.tistory.com
WSL2 ์ด๊ธฐ์ค์
ํจํค์ง ๋ฏธ๋ฌ ์ฃผ์๋ฅผ ํ๊ตญ ์นด์นด์ค ์๋ฒ๋ก ์ค์ sudo sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list ํจํค์ง ์ ๋ฐ์ดํธ, ์ ๊ทธ๋ ์ด๋, ๋ถํ์ํ ํจํค์ง ์๋ ์ ๊ฑฐ sudo apt update && sudo ap
basiclike.tistory.com
์ฐธ๊ณ ) WSL ์ญ์
WSL2 ์ญ์
1. ํฐ๋ฏธ๋ ์ด๊ธฐ 2. ์ค์น๋ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ ํ์ธ ํ ์ญ์ wsl -l -vwsl --unregister Ubuntu-22.04 3. ์ฐ๋ถํฌ ๋ฐฐํฌํ ์ฑ ์ ๊ฑฐ 4. ์ค์น๋ Linux์ฉ Windows ํ์ ์์คํ ์ ๊ฑฐ [ Window ํค + i ] ๋จ์ถํคโถ App
basiclike.tistory.com
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด, ์ฆ์ ์ญ์ ํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ํฉ๋๋ค.
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 -ybuild-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

VS Code ํ๊ตญ์ด ์ค์
1. ํ๊ตญ์ด ํฉ ์ค์น 2. VS Code ์ฌ์คํ 3. ์ธ์ด ๋ณ๊ฒฝ ํ์ธ VS Code ์ธ์ด ์ ํ >configure display language
basiclike.tistory.com
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) |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
