자동으로 MingW를 사용해 C/C++환경을 자동으로 설정해주고, 프로젝트 관리해주는 툴을 제작했습니다! 관심있으신 분들은 아래 링크로 가주시면 됩니다!
https://jhoplin7259.tistory.com/133
이번에는 Winodows에서 Visual Studio Code에디터에서 C/C++코드를 컴파일 및 디버깅하기 위한 기본적인 개발환경 구축에 대해서 포스팅 해보겠습니다. 단계별로 진행되며, 따라하시다 잘 안되는 부분이 있다면 댓글로 작성해주시면 감사하겠습니다.
1. VSCode 한글화하기
읽으시기전 VSCode를 한글화 하실 분들은 마켓플레이스(Ctrl + Shift + X)에서 Korean을 검색하시면 "Korean(사용법) Language Pack for Visual Studio Code" 라고 나오는것을 설치하신 후 VSC를 재부팅 해주시면 됩니다.
2. MinGW64 설치하기
위 링크로 들어가신 후 아래 최신 버전 MinGW의 'x86_64-posix-seh'을 다운로드 해주시면 됩니다. 이 과정은 GCC/G++(GNU C/C++ Compiler)컴파일러를 설치하는 과정입니다.
위 하이라이트는 64비트 컴파일러이며, 32비트 컴파일러가 필요하신 분은 'i686-posix-dwarf'를 선택해주시면 됩니다
다운로드를 하신 후 압축을 해제해 주시면 됩니다. 혹시라도 아래와 같은 문구가 뜨면서 압축해제가 되지 않으시는 분은 알집, 반디집과 같이 압축해제 프로그램을 설치해 주신후 다시 시도해보시기 바랍니다.
압축 해제후 'mingw64'라는 폴더를 복사해서 C드라이브로 옮겨줍니다.
해당 mingw64에 들어갔을때 저와 동일한 파일들이 있는지 확인해주세요(아래사진).
3. 환경변수 설정하기
이제 환경변수를 설정해 주어야합니다. 'window + R'을 눌러 실행을 연 후 'sysdm.cpl'를 입력해줍니다.그러면 '시스템 속성'이라는 창이 나오게 됩니다. 여기서 '고급' 부분에 들어가신 후 '환경변수'를 클릭하시면 '환경변수'창이 따로 나오게 됩니다. 이 창에서 '시스템 변수'의 'Path'를 지정하신 후 편집버튼을 눌러주시면 아래와 같은 창이 나오게 됩니다.
여기서 '새로만들기'를 누르고 아래 값을 입력해줍니다
C:\mingw64\bin
만약 저와 동일한 디렉토리가 아닌 다른 디렉토리에 놓으셨다면 '해당 디렉토리 주소' + \bin 을 입력해주시면 됩니다.환경변수를 입력하셨다면, 컴퓨터를 다시시작해주세요.
이제 이 GCC컴파일러가 제대로 적용이 됐는지 확인해야됩니다. CMD를 켜고 'gcc -v'를 입력하여 GCC컴파일러 적용을 확인합시다. 만약 저렇게 나오지 않는 경우에는 환경변수 창을 다시한번 확인하시고, 잘 되어있다면 컴퓨터를 다시한번 시작해주세요.
4. VSC 설정하기
임의의 workspace폴더를 열고, 임의의 c코드를 작성해 줍시다. 전처리기문에 밑줄쳐진 빨간줄은 신경쓰지 않아도 됩니다.
'Ctrl + Shift + X'를 눌러 마켓플레이스를 들어가 C/C++ extension을 설치해줍니다.
설치 후 'Ctrl + Shift + P'를 눌러 나오는 검색창에 'C/C++'입력해 나오는 'C/C++: 구성선택' 선택, '구성편집(UI)'를 선택해줍니다.
그러면 아래와 같은 설정창이 나오게 됩니다. 여기서 컴파일러 경로, IntelliSense모드를 설정해 주어야합니다. 컴파일러 경로같은 경우에는 C를 컴파일하는 경우에는 'C:/mingw64/bin/gcc.exe'를, C++를 컴파일하는 경우에는 'C:/mingw64/bin/g++.exe'를 선택해주세요. 그리고 IntelliSense같은 경우에는 'windows-gcc-x64'를 선택해주세요.
아래 C/C++표준은 사용하는 표준이 있으신 경우 해당 표준으로 설정해주시면 됩니다.
설정창을 닫고 나면 .vscode라는 디렉토리에 'c_cpp_properties.json'파일이 생성되는것을 볼 수 있습니다. 이 파일은 방금 저희가 설정한 내용을 json형태로 출력한 파일입니다.
5. 코드 컴파일 / 디버깅
이제 본격적으로 코드를 컴파일 / 디버깅하는 과정을 들어가 보겠습니다. VSC의 '터미널 -> 기본빌드 작업구성'을 선택합니다. 그리고 workspace에서 사용하는 언어에 따라 선택해주면 됩니다. 동일하게 c를 컴파일한다면 gcc를, c++를 컴파일한다면 g++를 설치해 주시면 됩니다. 그 후 '템플릿에서 tasks.json파일 만들기' -> 'Others'를 선택해줍니다.
그러면 아래와 같은 'tasks.json'파일이 생성되는것을 볼 수 있습니다
이 tasks.json파일 안에 값을 모두 지우고 아래 JSON서식을 넣어줍니다
{
"version": "2.0.0",
"runner": "terminal",
"type": "shell",
"echoCommand": true,
"presentation": {
"reveal": "always"
},
"tasks": [
{
"label": "save and compile for C++",
"command": "g++",
"args": [
"${file}",
"-g",
"-o",
"${fileDirname}/${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
}
}
},
{
"label": "save and compile for C",
"command": "gcc",
"args": [
"${file}",
"-g",
"-o",
"${fileDirname}/${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
}
}
},
{
"label": "execute",
"command": "cmd",
"group": "test",
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}"
]
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 활성 파일 빌드",
"command": "C:/mingw64/bin/g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "디버거에서 생성된 작업입니다."
}
]
}
그 후 Ctrl + S로 저장해줍니다. 만약 복사가 한줄로 된다면 JSON Prettify를 진행하신후 입력하시는걸 추천드립니다.
이제 컴파일에 대한 단축키를 등록해줄 차례입니다. '파일'->'기본설정'->'바로가기 키'를 눌러주어 단축키 설정창으로 들어갑니다(Ctrl + K + S).
여기서 맨 오른쪽에 있는 '바로가기 키 열기(JSON)'으로 들어가줍니다. 그리고 안에있는 내용을 다 지우고 아래 JSON서식을 입력해줍니다. 만약 단축키를 다른거로 하고싶다면 "key"값의 value를 변경해주시면 됩니다.
// 키 바인딩을 이 파일에 넣어서 기본값 재정의
[
{ "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" },
{ "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]
<이제부터 나오는 컴파일/디버깅은 VSC 디폴트 명령프롬프트가 Windows CMD로 설정되어있다는 가정에서 진행됩니다>
이제 C코드 컴파일을 해봅시다. 아까 컴파일(빌드)단축키로 지정한 'Ctrl + Alt + C'를 눌러 컴파일을 해줍니다. 그러면 저처럼 실행파일이 생성된것을 볼 수 있습니다.
이제 생성된 실행파일을 실행하기 위해서는 'Ctrl + Alt + R'을 눌러 execute를 해주실 수 있습니다.
자 이제 디버깅을 위한 약간의 작업을 해주어야합니다. '실행'->'구성추가'->'C++(GDB/LLDB)' -> 'g++.exe~~' 를 선택해줍니다.
그러면 .vscode디렉토리에 launch.json이 생성되는것을 볼 수 있습니다. launch.json에서 externalConsole의 값을 false에서 true로 바꿔 저장해 줍니다.
이 값을 변경해주는 이유는 디버깅시 아래와 같이 printf, std::cout등의 console출력까지 실행되는것을 볼 수 있게하기 위한것입니다.
자 이제 임의로 breakpoint를 지정하고 F5키를 눌러서 디버깅을 해봅시다. F11을 눌르면 현재 디버깅하는 시점의 다음줄로 넘어갈 수 있습니다. 디버깅을 하면서 값을 보여주는 콘솔은 작업표시줄에 열리게 됩니다.
다른 workspace에서도 동일하게 사용하고 싶은 경우 방금 생성한 설정파일들이 담긴 .vscode디렉토리를 복사해 작업하고자 하는 workspace에 붙여넣기 해주시면 됩니다.(컴파일,디버깅 모두 그대로 됨) 이 부분은 나중에 windows batch로 자동화하는 스크립트를 만들어 WSL(Windows Subsystem for Linux)을 활용해 C/C++개발환경 구축하는 방법을 정리한 포스트로 찾아오겠습니다.
긴 포스트 봐주셔서 감사합니다. 혹시라도 궁금하신점 / 잘못된 부분 / 더 나은 개선방안이 있으신 분은 댓글로 남겨주시면 감사하겠습니다!! :)
'IDE and Editor' 카테고리의 다른 글
Visual Studio Code에서 Python 코드 실행방법 간단살명 (0) | 2020.01.12 |
---|---|
Java Eclipse IDLE the selection cannot be launched and there are no recent launches 오류해결법 (0) | 2019.02.21 |