알고리즘을 풀기 전에 Vscode로 C++를 컴파일 하기위한 환경 셋팅을 해주자!
나는 본의아니게 Window를 태어날 때부터 쭉 써왔고, 게임을 포기 못하는 Korean
이기 때문에 Window를 기준으로 설명을 할거다!
여러가지 언어를 배우다보면 , 언어 환경셋팅 중에 공통적인 과정들이 많이 보이게 된다. 물론, 각각의 언어에 특화된 IDE를 써도 되지만, 그건 갬성
이 없으니까, 하나의 IDE에서 여러가지 언어를 바꿔끼우는 짓을 많이 하다보면 느낌이 온다. 보통은 아래와 같은 과정을 거친다.![]
- 언어 해석기 다운로드 받기.
- OS가 언어해석기를 인지하게 만들기.
- 코드 에디터가 언어해석기 알아듣도록 연결하고, Terminal에서 바로 쓸 수 있도록 연결설정 해주기. 끗!
Node를 예로 들어보자.
1번은 Node 홈페이지 들어가서, Node
를 다운로드 받는다. (Node는 JS 런타임이니까)
2번은 Node installer가 설치과정에서 해결을 해준다.
3번은 Vscode의 LiveServer,nodemon과같은 Extension을 이용하거나, package.json을 기반으로 설정을 해주면된다.
MinGW는 Minimalist GNU for Window의 줄임말로 , Windows에서 GCC를 쓸 수 있게 해주는 Tool이다. 여기서 , GNU가 무엇인지 ,GCC가 무엇인지에 대해서 깊이 다루지는 않을거다. 왜냐하면, 이건 따로 다뤄야 할정도의 분량이 있는 일이기 때문이다. (소프트웨어 라이센스와 Compiler, 초창기 OS에 관한 이야기가 다루어져야 한다)
여기서는 "Window"에서 "GCC"라는 컴파일러를 다룰 수 있게 해주는 Tool이라는 점만 기억하자.
아래의 링크에서 MinGW-W64 GCC-8.10에 있는 x86_64-posix-seh를 다운로드하면 된다.
만약, 자신의 운영체제가 32비트이다? 그럼 i686-posix-dwarf를 다운로드 하면된다.
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
C드라이브 밑에 압축을 풀어주면, C:\mingw64
폴더가 생기게 될것이다.
OS는 바보멍텅이이기 때문에, GCC를 다운받았다해서 GCC를 알아먹지 못한다. 그래서, GCC를 Terminal과 연결해주는 작업이 필요하게 된다. 이 작업을 보통 Window에서는 환경변수
를 설정해준다고 표현한다.
윈도우 검색창에 환경 변수
라고 치면, 아주 친절하게 나오긴 하지만 이건 감성이 없기 때문에 탈락이다.
window +r
키를 눌러 실행창을 띄워주고, 멋있게 sysdm.cpl
를 입력해주도록 하자.
고급 ->환경변수 -> path -> 편집 -> mingw의 bin폴더 파일 경로를 등록해주자.
gcc -v
이라고 치면, Window에 gcc가 성공적으로 인식이 되어서 gcc version이 뜰 것이다.MS사에서 배포한 Extension을 install 해주자.
설치가 완료 되었다면, Ctrl + shift +p
를 입력해서, 커맨드 팔렛을 열어주고 구성 편집(UI)를 클릭해준다.
저희의 목적은 VSCode에 GCC를 알려줘야합니다! 그럼, 컴파일러를 선택해주면 됩니다.
그리고, 컴파일러에 쓰일 C++버전을 선택해주시면 됩니다. 저는 C++17를 선택하겠습니다.
저장하기를 누르면, c_cpp_properties.json
이라는 아래와 같은 Json파일이 생성됩니다.
ctrl+shift+p
를 눌러서, 기본빌드 작업구성이라고 검색해도 되고, configure task라고 검색하면, 기본빌드 작업구성이 나온다.
그리고, C++를 선택해주자. 그러면,task.json
이라는 파일이 생기면 안의 내용을 아래처럼 교체해줘야한다. 그대로 복사해서 붙여넣자.
{
"version": "2.0.0",
"runner": "terminal",
"type": "shell",
"echoCommand": true,
"presentation" : { "reveal": "always" },
"tasks": [
//C++ 컴파일
{
"label": "save and compile for C++",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": "build",
//컴파일시 에러를 편집기에 반영
//참고: https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher
"problemMatcher": {
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
// The regular expression.
//Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
//C 컴파일
{
"label": "save and compile for C",
"command": "gcc",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": "build",
//컴파일시 에러를 편집기에 반영
//참고: https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher
"problemMatcher": {
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
// The regular expression.
//Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
// 바이너리 실행(Ubuntu)
// {
// "label": "execute",
// "command": "${fileDirname}/${fileBasenameNoExtension}",
// "group": "test"
// }
// 바이너리 실행(Windows)
{
"label": "execute",
"command": "cmd",
"group": "test",
"args": [
"/C", "${fileDirname}\\${fileBasenameNoExtension}"
]
}
]
}
그 다음, 단축키 설정까지 해주면 진짜 끝이다! 다시 커맨드 팔레트를 열어서, keyboard short cut.JSON을 열어주자.
그 뒤, JSON 파일을 아래와 같이 수정해주면 된다.
// 키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다.
[
//컴파일
{ "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" },
//실행
{ "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]