Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 C/C++을 컴파일하고 실행시키는 방법에 대해 설명합니다. 

테스트에 사용한 운영체제 버전은 Windows 10과 Ubuntu 18.04입니다.


Visual Studio Code 버전에 따라 진행 방법이 달라 질 수 있습니다.

문제가 되는 것을 발견할때 마다 문서를 업데이트합니다.

현재 문서는 Visual Studio Code 1.40.2에서 테스트 한 결과입니다. 



컴파일시 에러 메시지를 영어로 보려면 다음 명령을 터미널에서 실행하세요.

chcp 437




1. C/C++ 컴파일러 설치


2. Visual Studio Code 설치


3. C/C++ 프로젝트 폴더 생성


4. C/C++ 언어 지원 설치


5. 코드 컴파일 및 실행


6. 한글 입출력 예제 


7. 디버깅하는 방법 




2017.  8. 15 최초 작성

2018.  1. 9  tasks.json 일부 문법 변경으로 수정

2018.  1. 17 IntelliSense와 디버깅 방법 추가

2018.  7. 3 Ubuntu에서 하는 방법과 통합

2018.  7. 19 한글 입출력 예제 추가 

2018.  10. 12 최신 버전에서 확인 및 수정

2018.  11. 20 리눅스에서 tasks.json 수정

2018.  12. 3 디버깅 방법 개선

2018. 12.22  Windows 10 RS5(버전 1809)로 업데이트시 한글 깨짐 현상 발생

2019. 5. 1  1.33에서 바뀐점 수정

2019. 5. 21  전역 변수 디버깅 방법 추가 

2019. 6. 20  비주얼 스튜디오 코드 업데이트로 바뀐점 수정

2019. 8. 15  디버깅 관련 수정, mingw-w64에 맞추어 수정

2019. 8. 20  Ubuntu를 위한 부분 업데이트

2019. 10. 22 디버그시 launch.json 생성 문제 해결방법 추가

2019. 11. 17 utf8을 사용해도 한글 안 깨지도록 수정

2019. 12. 1   euc-kr로 변경

2020. 4. 12  우분투에서 컴파일된 프로그램 실행시 에러나는 문제 해결

                     lenilune3님이 알려주신 건데 이제서야 반영했네요.  




1. C/C++ 컴파일러 설치 

1.1. Windows 


아래 링크에서 MinGW-W64 Online Installer 항목에 있는 MinGW-W64-install.exe를 다운로드합니다. 

https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 





설치시 아키텍처를 선택할 수 있습니다. 

여기에서는 아키텍처로 i686을 선택하여 설치합니다. 이 옵션에 따라 gcc, g++, gdb 등의 설치 경로가 달라집니다. 





윈도우 키 + R을 눌러서 보이는 실행창에서 sysdm.cpl를 입력하고 엔터를 누릅니다. 





고급 탭을 클릭하고 아래 보이는 환경 변수 버튼을 클릭합니다. 





시스템 변수에서 Path를 선택하고 편집 버튼을 클릭합니다. 





새로 만들기 버튼을 클릭한 후.. 맨 아래에 다음 경로를 입력합니다.

경로에서 파란 부분은 64비트 아키텍처를 사용한 경우 Program Files로 변경되며

빨간 부분은 설치한 mingw 버전에 따라 차이가 있을 수 있으니 확인해보고 진행하세요. 


C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin

 



윈도우 키 + R을 입력 후, cmd 엔터를 눌러서 실행되는 명령 프롬프트 창에서 

다음처럼 gcc -v 명령이 실행 가능해지는지 확인하세요.





1.2. Ubuntu


build-essential 패키지를 설치하면 gcc, g++ 등 컴파일에 필요한 패키지들이 설치됩니다.


$ sudo apt-get install  build-essential


webnautes@webnautes-pc:~$ sudo apt-get install  build-essential
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  g++ g++-7 gcc
제안하는 패키지:
  g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib flex
  bison gcc-doc
다음 새 패키지를 설치할 것입니다:
  build-essential g++ g++-7 gcc
0개 업그레이드, 4개 새로 설치, 0개 제거 및 81개 업그레이드 안 함.
7,577 k바이트 아카이브를 받아야 합니다.
이 작업 후 25.0 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 




2. Visual Studio Code 설치

다음 포스팅을 참고하여 진행하세요. 




Visual Studio Code 설치하는 방법( Windows / Ubuntu )

http://webnautes.tistory.com/1197 





여기서부터는 윈도우와 우분투에서 똑같이 진행하면 됩니다.

유저 인터페이스 언어를 한글로 바꾸려면 Ctrl + Shift + P를 누르고 입력창이 보이면 dislay를 입력하고 엔터를 누릅니다.




Install additional languages를 선택합니다.




Korean Language Pack을 선택하고 초록색 Install 버튼을 클릭하여 설치합니다. 




설치 완료 후, 설정을 반영하기 위해 비주얼 스튜디오 코드를 종료했다가 다시 실행합니다. 



설치 완료후 Visual Studio Code를 종료했다가 다시 시작하면 유저 인터페이스가 한글로 변경됩니다. 





3. C/C++ 프로젝트 폴더 생성

Hello, World!를 출력하는 프로그램 코드를 작성해보겠습니다. 


3-1. 왼쪽에 위치한 액티비티 바에서 탐색기 아이콘을 클릭하거나, 단축키 Ctrl + Shift + E를 누르면 아래 캡쳐화면처럼 사이드바에 탐색기가 열립니다.





3-2. 탐색기에서 폴더 열기를 클릭합니다.





3-3.  윈도우의 경우에는 왼쪽 위에 보이는 새 폴더를 클릭하여 C_C++_Projects 폴더를 생성합니다. 

( 이름에 빈칸이나 & 등을 쓸수 없는 제약이 있습니다. )


생성된 C_C++_Projects 폴더를 선택하고 폴더 선택 버튼을 클릭합니다.





우분투의 경우에는 로그인 사용자 폴더로 이동한 후  폴더 만들기를 클릭하여  C_C++_Projects 이름의 폴더를 생성합니다. 

생성된 폴더로 이동한 후 확인 버튼을 클릭합니다.





다음처럼 오른쪽 위에 아이콘이 보일 수도 있습니다.






3-4. 탐색기에 C_C++_PROJECTS 폴더가 추가되었습니다.




3-5. C와 C++ 소스 코드 파일를 위한 별도의 하위 폴더를 생성하도록 하겠습니다.

우선 C언어를 위한 폴더를 생성합니다. 생성된 폴더를 클릭하면 보이는 새 폴더 아이콘을 클릭합니다.





3-6. helloworld를 입력하고 엔터를 눌러서 helloworld 폴더를 생성합니다.





3-7. 새 파일 아이콘을 클릭합니다.





3-8. hello.c를 입력하고 엔터를 눌러서  파일을 생성합니다. 편집기 영역에 hello.c 파일이 열립니다.





오른쪽 아래에 C/C++ 확장 권장 메시지 박스가 보이면 Install을 클릭하여 설치합니다.





3-9. hello.c 파일에 다음 코드를 입력합니다.


#include <stdio.h>

 

int main()

{

    printf("Hello, world!\n");

    return 0;

}




3-10. 입력 후, 탭에 표시된 파일 이름 옆에 하얀색 동그라미가 표시됩니다.





Ctrl + S를 눌러 저장하면 하얀색 곱하기 표시로 변합니다.





3-11. 이번엔 C++ 코드를 위한 폴더를 생성합니다. 

아래 캡쳐화면처럼 빈 공간(빨간색 사각형)을 클릭합니다.

그러면 helloworld에 대한 선택이 해제됩니다. 





3-12. C_C++_PROJECTS에 마우스 커서를 가져가면 보이는 새폴더 아이콘을 클릭합니다. 





3-13. helloworldcpp를 입력하고 엔터를 눌러서 폴더를 생성합니다. 





3-14. 이제 helloworldcpp가 선택된 상태입니다.  C_C++_PROJECTS 옆에 보이는 새파일 아이콘을 클릭하면 helloworldcpp 폴더에 파일을 추가할 수 있습니다. 


새파일 아이콘을 클릭하고 hello.cpp를 입력 후 엔터를 누르면 캡쳐화면처럼 파일이 생성됩니다. 





3-15. 다음 내용을 hello.cpp 파일에 입력하고 Ctrl + S를 눌러서 저장합니다. 


#include <iostream>

using namespace std;

int main()
{
    cout << "Hello, World!" << endl;


    return 0;
}




3-16. 현재 탐색기에 있는 파일과 폴더 목록입니다.




4. C/C++ 언어 지원 설치

4-1. C/C++에 대한 문법 강조(Syntax highlighter)는 기본적으로 지원하고 있습니다. 

하지만 Visual Studio Code에서 C/C++을 제대로 사용하려면 C/C++ 확장을 설치해줘야 합니다. 


앞에서 아래와 같은 창이 보여 설치했다면 4.2를 건너뛰고 4.3을 진행하세요.





4-2. 설치 창이 보이지 않았다면

Ctrl + Shift + X를 누르거나 액티비티 바에서  확장 아이콘을 클릭 후, 입력란에 c/c++을 입력합니다. 





검색된 리스트에서 C/C++ 항목에 있는 초록색  설치를 클릭합니다.




설치한 확장을 적용시키기 위해  비주얼 스튜디오 코드를 종료시켰다가 다시 실행합니다. 



4-3. Ctrl + Shift + P를 눌러서 보이는 입력 창에 c/c++을 입력한 후, 

C/C++: 구성 편집(UI)를 선택합니다. 




4-4. IntelliSense 구성이 보입니다.  윈도우의 경우 4-5를 우분투의 경우 4-6을 진행하세요. 


4-5. 윈도우의 경우 컴파일러 경로에 3개의 컴파일러가 인식되어 있습니다. 




g++. exe를 선택해줍니다. 헤더파일 인식하여 작성한 코드에 유용한 정보를 제공하기 위해 필요한 작업입니다. 

공백이 포함된 경로라서 정상적으로 인식되려면 다음처럼 앞뒤에 큰따옴표를 추가해줘야 합니다. 





4-6. 우분투의 경우에도 컴파일러들이 인식됩니다. 

컴파일 경로로 /usr/bin/g++을 선택합니다. 





4-7. 윈도우/우분투 공통부분입니다. IntelliSense 모드로 gcc-x64를 선택합니다.




4-8. 설정이 자동으로 저장되므로 현재 탭을 닫아도 됩니다. 




4-9. 탐색기를 보면 .vscode 폴더에 c_cpp_properties.json파일이 추가되어 있습니다.




4-10. 추가 헤더파일을 인식하게 하고 싶으면 ‘includePath 항목에 추가하세요. 

기존 항목 끝에 콤마(,)를 추가한 후, 추가할 헤더파일 경로를 입력하면 됩니다. 


{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "\"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++.exe\"",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}


{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
               "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}



5. 코드 컴파일 및 실행


5-1. Visual Studio Code의 메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다.



5-2. 템플릿에서 tasks.json 파일 만들기를 선택합니다. 




Others를 선택합니다.




5-3. 탐색기의 .vscode 폴더에   tasks.json 파일이 추가되고 편집기에서 해당 파일이 열립니다.




5-4. tasks.json 내용을 다음으로 교체하고 Ctrl + S를 눌러서 저장합니다.


{
    "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}"
            ]
   
        }
    ]
}




우분투의 경우에는 아래처럼 수정해서 사용하세요.


        // 바이너리 실행(Ubuntu)
        {
            "label": "execute",
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "group": "test"
        }
       // 바이너리 실행(Windows)
        //{
        // "label": "execute",
        // "command": "cmd",
        // "group": "test",
        // "args": [
        //   "/C", "${fileDirname}\\${fileBasenameNoExtension}"
        // ]
   
        // }





5-6. 단축키를 설정해줍니다.   메뉴에서 파일 > 기본 설정 > 바로 가기 키를 선택합니다. 

이미 설정되어 있는 단축키 목록을 보여줍니다. 


사용자 정의로 바로 가기 키를 추가해야 합니다. 캡처화면에 빨간색 사각형으로 표시한 아이콘을 클릭합니다.





5-7. 다음처럼 입력하고 Ctrl + S를 눌러서 저장합니다. 기본값을 무시하고 현재 입력한 값이 우선 적용됩니다.

(단 우분투의 경우 데스크톱 환경의 단축키가 우선입니다. 다른 곳에서 사용하지 않는 단축키를 사용해야 합니다.)


// 키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다.
[
    //컴파일
    { "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" },
   
    //실행
    { "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]




5-8. 탐색기에서 hello.c를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C를 선택합니다.




편집 중이던 모든 파일 저장되고 앞에서 터미널컴파일 진행결과가 보입니다.

문제없이 컴파일이 진행되어다면 왼쪽 탐색기에 컴파일 결과물인 hello.exe 파일이 보입니다. 





Ctrl  + Alt + R을 누르면 보이는 execute를 선택합니다.




실행 결과가 터미널에 보여집니다.





5-9. 탐색기에서 hello.cpp를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C++를 선택합니다.




편집 중이던 모든 파일 저장되고 앞에서 터미널컴파일 진행결과가 보입니다.

문제없이 컴파일이 진행되어다면 왼쪽 탐색기에 컴파일 결과물인 hello.exe 파일이 보입니다. 




Ctrl  + Alt + R을 누르면 보이는 execute를 선택합니다.




실행 결과가 터미널에 보여집니다.




참고로 소스코드별로 별도의 폴더를 생성하지 않고 하나의 폴더에 여러 개의 소스코드를 작성하여 컴파일 하는 것도 가능합니다.





6. 한글 입출력 예제 


6-1. 리눅스 환경이라면 별다른 설정 변경없이 진행가능합니다. 7번을 진행하세요.


아래처럼 진행했는데 한글이 깨지는 경우 윈도우를 업데이트 해보세요..


현재 최신 버전인 Windows 10 버전 1903(빌드 18362.295)에선 한글 깨짐현상이 없습니다.

윈도우 버전 확인은 윈도우키 + R을 눌러 실행창에서  winver를 실행하면 확인할 수 있습니다. 


메뉴에서 파일 > 기본설정 > 설정 을 선택합니다.


encoding을 검색하여 Encoding 항목을 euckr로 변경합니다.




다음 예제를 새로운 파일로 저장하여 실행시켜보면 


#include <stdio.h>

int main()
{
    printf("문자열을 입력후 엔터를 누르세요!\n");

    char a[256];
    scanf("%s", a);

    printf(" \" %s \" 를 입력하셨네요.\n", a);
    return 0;
}



다음처럼 코드에 입력한 한글 문자열 출력과 입력한 문자열에 대한 출력이 모두 정상인 것을 볼 수 있습니다.





7. 디버깅하는 방법

진행하기 전에 위에서 작업했던 일부를 수정해야 합니다. 

프로젝트 폴더의 .vscode 폴더에 있는 tasks.json 파일을 열어서 컴파일 시 디버그 정보를 포함하도록 합니다. 




7-A C++ 언어 디버깅


7-1. 테스트 해보기 위해서 새로운 하위 폴더를 생성하여 main.cpp 파일을 추가합니다. 

먼저 C++ 파일의 경우부터 보겠습니다.


#include <iostream>

using namespace std;

int c = 0;
int d = 100;

int main()
{
    int a = 2;
    int b = 2;
    int c = a + b;

    cout << a << " + " << b << " = " << c << endl;

    return 0;
}






숫자 5 왼쪽으로 마우스 커서를 이동 후. 마우스 왼쪽 버튼을 클릭하면 빨간점이 표시됩니다.

디버깅이 시작되면 잠시 멈추게되는 브레이크 포인트입니다. 

 




7-2.  Ctrl + Shift + P를 누른 후, 입력창에 launch를 입력하고 




C++(GDB/LLDB)를 선택합니다.




g++.exe를 선택합니다. 





잠시 기다리면 디버깅이 시작됩니다. 

F11을 눌러서 다음 줄이 실행되게 할 수 있습니다. 

왼쪽에 보이는 변수 창에 지역 변수가 업데이트 됩니다. 





.vscode 폴더에 launch.json 파일이 생성되어야 하는데 

현재는 다음과 같은 에러가 난다면...




.vscode 폴더에 launch.json 파일을 추가해줍니다. 



launch.json 파일에 다음 내용을 추가해줍니다. 


윈도우의 경우 다음 부분이 현재 사용중인 컴파일러와 경로가 다르다면 수정해줘야 합니다.  

"miDebuggerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",


{
    // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
    // 기존 특성에 대한 설명을 보려면 가리킵니다.
    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}



우분투의 경우 다음 설정을 사용하세요.


{
   // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
    // 기존 특성에 대한 설명을 보려면 가리킵니다.
    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}







7-3. 7-2 작업은 한번만 해주면 됩니다. 이후에는 브레이크 포인트를 지정하고 F5를 누르면  디버깅이 시작됩니다. 




7-4. main함수 에서 사용하는 전역 변수 c는 변수 항목의 Locals에 추가되었는데 

전역변수 d의 경우에는 추가되어 있지 않습니다. 




이 경우 조사식에 마우스 커서를 가져가면 보이는 + 아이콘을 클릭하고 




추가할 변수 이름을 입력후 엔터를 누르면




해당 변수의 값이 보입니다.





7-B C언어 디버깅


별도의 추가 작업 없이 동일하게 디버깅이 가능했습니다. 






포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


후원계좌 카카오뱅크 3355112417955

  1. 이전 댓글 더보기
  2. d.d 2020.03.19 11:26

    1번 컴파일러 설치 할 때 'the file has been downloaded incorrectly' 라는 문구와 함께 꺼지는데 어떻게 해야 할까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.19 11:33 신고

      다시 다운로드 받아야 합니다. 다운로드 받다가 에러난듯해여. 다른 웹브라우저를 사용해보세요

  3. wnajsldkf 2020.03.22 20:54

    안녕하세요:) 글 잘 보고 따라하고 있습니다.
    저는 wsl에서 진행하고 있습니다.
    다름이 아니라 컴파일 진행할 때 `execute`를 하면은 아래의 오류가 나타납니다.
    ` '${fileDirname}'을(를) 확인할 수 없습니다. 편집기를 여세요. `
    왜인지 혹시 알 수 있을까요??

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.22 21:49 신고

      wsl에서 해본적이 없어서 답변을 드리기 어렵네요.

      아래 포스트에 있는 설정파일을 확인해보세요

      https://evols-atirev.tistory.com/29

    • wnajsldkf 2020.03.22 21:55

      우왓! 감사합니다:)

  4. T.DIA 2020.03.26 16:18

    MinGM 인스톨 과정에서
    "Can not open output file" 에러가 발생하는데 해결법이 있을까요?

    제 환경은 윈도우 10 / 64bit이고 1번 설치과정 설정은 동일하게 하였습니다.

    감사합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.26 17:31 신고

      관리자 권한으로 설치해보세요

    • T.DIA 2020.03.27 09:44

      전체 다운로드 파일 용량이 설치가능한 용량을 초과하여 발생한 에러 같습니다. 파일 경로를 변경하여 설치하니 됐습니다. 감사합니다~^^

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.27 09:46 신고

      다행입니다~

  5. 굿 2020.03.29 18:28

    와우 감사합니다 이글보고 따라하니 다 잘 되네요 완벽정리글 써주셔서 감사합니다. 큰도움이되었습니다

  6. Favicon of http://helloworld-ychun0.tistory.com BlogIcon yeinchung04@gmail.com 2020.03.29 22:53

    안녕하세요! 그 4-10이 이해가 잘 안가요ㅜㅜ 어디다가 뭘 추가해야하는건지 모르겠어요..

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.29 23:07 신고

      4-9에서 추가된 파일에 추가하라는 의미입니다. 노란색으로 된부분에 원하는 헤더파일의 경로를 추가하는 것입니다

  7. asdf 2020.03.31 17:52

    이 글과는 상관없는 댓글인데 왼쪽 목차가 블로그 글을 가려서 거슬리는군요 어떻게 집어넣는지도 모르겠고......

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.03.31 18:28 신고

      수정했습니다. 지금도 이상하게 보이나요?

    • asdf 2020.03.31 20:10

      아 이제 잘 보입니다. 감사합니다.

  8. ㅇㅇ 2020.04.03 10:10

    vscode 초기세팅에 많은 도움이 되었습니다 포스팅 감사합니다

  9. Favicon of https://shanghaikimpro.tistory.com BlogIcon 상하이김프로 2020.04.03 23:12 신고

    이제 처음으로 Visual studio code를 사용하는 사람으로 매우 많은 도움이 되었습니다.
    대략적으로 이해한 것은 Visual studio code는 여러 개발 언어에 대한 개발 환경을 개발자가 스스로 구축해서 사용하는 것인 것 같네요.
    이런 방식은 처음이라서 많은 도움이 되었습니다. 꾸벅 ^^

    그리고 질문이 있습니다.
    설명해 주신데로 모든 것이 잘 수행되었고요,
    C 언어 디버깅에서도 모두 잘 수행되는데 printf 결과가 디버그콘솔에 나타나지 않습니다. ㅠㅠ
    실행을 하면 잘 나타나고요.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.06 21:24 신고

      감사합니다. printf결과는 결과창에 보이지 않나요?

    • 상하이김프로 2020.04.07 09:50

      집에서 할때는 C++은 cout 결과가 디버그콘솔에 나타납니다만,C는 printf 결과가 디버그콘솔에 나타나지 않습니다.
      그런데 회사에서는 c/c++ 모두 터미널에 출력이 잘 나타나네요. ㅎㅎ
      왜 어쩔때는 터미널이고 어쩔때는 디버그콘솔인지 잘 모그렜네요??? ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.07 10:30 신고

      설정이 똑같은데 다르게 동작한다면 Visual Studio Code 버전 차이 일 수도 있을 듯합니다.

  10. plenilune3 2020.04.06 14:33

    안녕하세요.
    좋은 포스팅 감사합니다.
    제가 발견한 문제점과 해결방안을 덧글로 남깁니다. 저와 같은 문제점을 겪으시는 분들이 참고하셨으면 좋겠습니다.
    5-4에서 tasks.json 파일을 설정할 때,
    우분투는 바이너리 실행을 위하여 task에 excute를 추가하는데요.
    command에 작성한 cd 명령어를 인식하지 못하는 듯 합니다...
    저의 경우는 그냥 "command": "${fileDirname}/${fileBasenameNoExtension}" 이렇게 수정하여 의도한대로 동작하도록 했습니다.

  11. 778854@naver.com 2020.04.13 15:15

    1번에서 환경변수를 편집할 때 환경변수 편집을 누르면 새로 만들기라는 항목이 띄지 않던데 왜 그런 걸까요? 업데이트로 인해 그 부분이 수정된 것일까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.13 15:19 신고

      어떻게 보이나요? 이메일로 스크린샷을 보내보세요. webnautes@naver.com

  12. 김가윤 2020.04.13 18:01

    안녕하세요! 제가 이번 처음으로 이 페이지에서 vscode를 다운받아 c를 설치했습니다. 감사합니다 :)
    근데 무엇이 잘못되었는지 실행하려고 하니
    gcc : 'gcc' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인
    식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음
    다시 시도하십시오.
    위치 줄:1 문자:1
    + gcc c:\Users\Owner\c_project\data_structure\다항식_계산_1번.c -g c:\Users\O ...
    + ~~~
    + CategoryInfo : ObjectNotFound: (gcc:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    이렇게 나옵니다 ㅠㅠ...다항식 계산은 제 과제 파일 이름이구요...ㅎㅎ...
    제가 vscode에 미숙한지라 해결방법을 찾지못해 여기 남깁니다 ㅠㅠ 혹시 해결방법이 뭔지 알 수 있을까요?
    감사합니다!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.13 18:13 신고

      명령 프롬프트에서 gcc를 실행시 문제 없이 해결되나 확인해보셨나요?

      gcc 실행에 문제 없다면 아래를 해주세요.

      에러메시지를 영어로 출력하여 구글에서 검색하여 원인을 찾아야합니다.

      Ctrl + Shift + P를 누르고 입력창이 보이면 dislay를 입력하고 엔터를 누른 후, en을 선택하여 인터페이스를 영어로 바꾸세요.

      그리고 에러메시지가 뜨면 다시 블로그에 남겨주세요.

    • 김가윤 2020.04.14 15:59

      네! cmd에서는 문제없이 작동합니다. 근데 오늘 새로 키고 들어가니까 could not find the task 'g++.exe build active file.' 이렇게만 뜨고 실행이 안되네요...!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.14 16:03 신고

      tasks.json 파일을 지우고 다시 설정해보세요

    • 김가윤 2020.04.15 00:21

      와! 해결되었습니다 감사합니다 ㅎㅎ! 덕분에 무거운 비주얼 스튜디오에서 탈출했습니다... :) !!!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.15 08:07 신고

      해결되서 다행입니다~

  13. DANIEL 2020.04.16 15:02

    Hello에서 컴파일 후 exe 파일이 만들어 졌다가 곧바로 자동 삭제되어버리는데 뭐가 문제일까요?? ㅠ

  14. 선인장 2020.04.29 19:43

    혹시 파일분할된 여러 파일들을 한꺼번에 빌드하려면 어떻게 해야하나요?

    • 선인장 2020.04.29 21:26

      여러 클래스가 있다면 target dependency를 일일히 다 지정해줘야하나요..? 사실 Makefile 만들어놓은것을 쓰고 싶은데 어떻게 해야할지 감이 안잡히네요 ㅠㅠㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.29 21:51 신고

      Makefile이나 CMake를 사용해야 합니다. 그리고나서 기존 명령대신 make 또는 cmake명령으로 대체하면 됩니다.

    • 선인장 2020.04.30 22:32

      앗 Makefile로 컴파일하는거까지 성공했습니다! 답변 정말 감사합니다 ㅠㅠㅠ 그런데 이렇게 하고 나서 make 명령어를 이용해 .exe 파일을 만들고 디버깅을 하면 breakpoint도 걸리지 않고 켜지자마자 바로 꺼져버립니다..! 다만 싱글 파일을 make가 아닌 알려주신 방법대로 빌드해서 디버깅 하니 breakpoint도 잘 걸리고 실행도 잘 되더군요.. 혹시 조언을 얻을 수 있을까요.. ㅠㅠㅠㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.30 23:14 신고

      -g 옵션을 넣었나요?

      다중 파일 디버깅은 저도 테스트안해봐서 확실히 모릅니다

      gdb로 할경우 하나인 경우와 다수의 파일에서 하는 경우 방법이 다르더군요

    • 선인장 2020.05.01 23:13

      넵 -g 옵션을 추가했는데도 breakpoint가 걸리지 않고 바로 꺼져버리네용.. ㅠㅠ 인터넷 찾아보니 multi project에 대한 디버깅 방법만 나오고 다중 파일에 대한 디버깅은 나오지가 않네용 ㅠㅠㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.01 23:37 신고

      구글에서 찾아볼수 밖에 없을듯합니다

  15. ㅇㅇ 2020.05.08 00:21

    c언어 공부 시작해 보려고 하는데 7번 과정을 꼭해야되나요? 오류가 떠서요.

    • ㅇㅇ 2020.05.08 00:41

      그리고 컴파일 하려고 만든 파일 확장자가 json인 파일들은 지우면 안되는 건가요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.08 07:56 신고

      7번은 안해도 됩니다. .vscode폴더에 있는 json을 말하는거면 지우시면 안됩니다

  16. wieksloi 2020.05.09 09:18

    좋은 포스팅 감사하구연

  17. jihoon 2020.05.14 11:04

    좋은 글 잘 보았습니다. 앞서 설명한 방법은 다 됩니다. 추가로 C++ 디버깅하는데 디버깅모드에서 출력문은 확인할 수가 없더군요. (가령 cout으로 뭐가 출력되었는지 확인할 수가 없다는 뜻입니다.) 이 부분을 해결할 수 있는 방법이 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.17 15:59 신고

      디버깅시 아래 보이는 창에서 TERMIAL 탭을 선택하면 cout로 출력된 내용을 볼 수 있습니다

  18. under76 2020.05.19 14:59

    본 사이트의 내용 많은 참고가 되었습니다.
    한 가지 도움을 받고자 글을 남깁니다.

    위 포스팅 내용을 따라서 환경 구성은 하였습니다.

    그런데 소스에서 추가로 사용하고 싶은 header file이 있어 "c_cpp_properties.json" 파일의 includePath 항목에 경로를 아래와 같이 추가하였습니다.
    "configurations": [
    {
    "name": "Win32",
    "includePath": [
    "${workspaceFolder}/externals/include/**"
    ],
    "defines": [
    "_DEBUG",
    "UNICODE",
    "_UNICODE"
    ],
    "compilerPath": "C:/MinGW/bin/g++.exe",
    "cStandard": "c11",
    "cppStandard": "c++17",
    "intelliSenseMode": "gcc-x64"
    }
    ],
    "version": 4
    }
    그리고 소스에 헤더파일을 추가하여 컴파일을 하였는데, 헤더 파일을 찾을 수 없다는 오류가 발생합니다.
    혹시 다른 부분에다가도 경로를 설정해야 하느지 문의 드립니다.

    추가로 소스에서 사용하고자 하는 라이브러리 경로 및 라이브러리 파일은 어디에다가 등록해줘야 하는지도 문의 드립니다.
    Visual Studio 에서 속성페이지에서
    C/C++ > 일반 > 추가 포함 디렉토리
    링커 > 일반 > 추가 라이브러리 디렉토리 , 링커 > 입력 > 추가 종속성
    과 같이 설정할 수 있는 부분이 있는지 입니다.

    몇 일 동안 인터넷을 찾아서 따라해보고 했는데 여전히 안되어서 이렇게 문의 드립니다.

    긴 글 읽어 주셔서 감사합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.19 20:02 신고

      includePath에 헤더파일이 있는 전체 경로를 적어보세요.

      비주얼 스튜디오 코드는 비주얼 스튜디오처럼 환경설정을 할 수 있는 옵션창이 없습니다. 설정 파일을 수정해서 사용해야 합니다.

      인식이 안되면 gcc 또는 g++ 빌드 옵션에 다음을 추가해보세요. 대문자 아이입니다.

      -I 헤더파일경로

  19. under76 2020.05.20 09:03

    @webnautes님

    빠른 답변 주셔서 감사합니다.
    말씀하신대로
    c_cpp_properties.json 파일 내용 중 includePath에 아래와 같이 헤더파일이 있는 전체 경로를 입력해 보았으나 동일한 오류가 발생하였습니다.
    "includePath": [
    "D:/97_Sample/XXX_Project/externals/include"
    ],
    그리고 tasks.json 파일 내용 중 빌드 옵션에 아래와 같이 헤더파일이 있는 전체 경로를 입력해 보았으나 동일한 오류가 발생하였습니다.
    //C++ 컴파일
    {
    "label": "save and compile for C++",
    "command": "g++",
    "args": [
    "-I D:/97_Sample/XXX_Project/externals/include",
    "${file}",
    "-g",
    "-o",
    "${fileDirname}/${fileBasenameNoExtension}"
    ],
    "group": "build",

    소스 코드 에는 아래와 같이 해 주었습니다.
    #include "defines.h" <-- 이 파일이 D:/97_Sample/XXX_Project/externals/include 경로안에 존재하는 헤더 파일입니다.

    컴파일을 하게 되면 터미널 창에 다음과 같은 오류가 발생을 합니다.
    > Executing task: g++ '-I D:/97_Sample/XXX_Project/externals/include' d:\97_Sample\XXX_Project\gmbtester\main.cpp -g -o d:\97_Sample\XXX_Project\gmbtester/main <

    d:\97_Sample\XXX_Project\gmbtester\main.cpp:7:29: fatal error: defines.h: No such file or directory
    #include "defines.h"

    몇 일째 증상을 해결하지 못하여 문의 글 드리게 되었습니다.
    다시 한번만 확인 부탁 드릴 수 있을까요?
    조언 부탁 드립니다.
    감사합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.20 09:06 신고

      g++ 명령에 main.cpp 경로처럼 헤더파일 경로적을때 역슬래시대신 슬래시를 사용해보세요.

  20. under76 2020.05.20 09:24

    @ webnautes 님
    빠른 답변 정말 감사드립니다.

    이것저것 수정을 해보다가 해결이 되었습니다.
    정말 감사드립니다.

    저도 처음에는 슬래쉬와 역슬래쉬 차이인줄 알고 동일하게 맞춰주었지만 계속 오류가 나서 VSCode 상의 터미널에서 직접 명령어를 입력하니
    오류가 나지 않았습니다.
    터미널에 출력된 내용과 컴파일 했을때 내용과 차이를 보니 -I 옵션에 싱글따옴표가 있냐 없냐의 차이였습니다.
    그래서 tasks.json 파일에
    기존에는 -I 를 적었던 라인에 포함경로까지 함께 적어줬던것을
    -I 를 적고, 다음라인에 포함경로를 적어줬더니 싱글따옴표가 붙지 않고 정상적으로 컴파일&빌드가 되었습니다.
    ## 수정 전 ##
    "args": [
    "-I ${workspaceFolder}/externals/include",
    ## 수정 후 ##
    "args": [
    "-I",
    "${workspaceFolder}/externals/include",
    운영자님 조언으로 해결이 되었네요...^^
    이제 시작하는거고, 앞으로 라이브러리도 추가를 해야되고 하는 부분이 있는데 막히는 부분이 있으면 조언 요청 드리겠습니다.
    아침 일찍 부터 해결에 실마리를 제공해 주어서 감사합니다.
    오늘 하루도 좋은 하루 보내시기 바랍니다.

  21. @^^@ 2020.05.22 11:33

    디버깅을 하면 preLaunchTask 'g++.exe build active file' 가 1 종료 코드와 함께 종료되었습니다. 라는 오류 메시지가 나오고 이어서 강제 디버깅을 하면,
    launch: program 'c:\2020c++2\.vscode\launch.exe' does not exist. 라는 오류메시지가 나옵니다.
    어떻게 해결해야 하나요?

+ Recent posts