본문 바로가기

오늘의 공부/개발도구

[c언어] windows에서 gcc(c 컴파일러) 설치하기 2(visual studio 설정)

 

 

 


[1. 디버깅과 코드자동완성등을 위한 extension 설치]

 


[2. c_cpp_properties.json]

이 설정파일은 컴파일러 경로 설정들을 정하는 파일입니다. visual studio code는 json파일을 사용하여 설정을 합니다.

 

ctrl shift p를 눌러서 c/c++ :edit configuration(Json)에 들어갑니다.

 

변경전:초기 c_cpp_properties.json

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": ["${workspaceFolder}/**"], 
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "compilerPath": "C:\\Users\\seonghyuk\\Downloads\\mingw64\\mingw64\\bin\\gcc.exe",
      "cStandard": "c17",
      "cppStandard": "gnu++14",
      "intelliSenseMode": "windows-gcc-x64"
    }
  ],
  "version": 4
}

 

 

[설정 추가 후 c_cpp_properties.json]

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/**",
        "C:/Program Files (x86)/mingw64/mingw64/bin"
        //gcc 및 각종 라이브러리 패키지 포함시키는 경로 
      ],
      "compilerPath": "C:/Program Files (x86)/mingw64/mingw64/bin/gcc.exe",
      //gcc컴파일러 경로
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "intelliSenseMode": "windows-gcc-x64"
      //코드 작성서 코드 자동완성기능 어떤 버젼으로 할것인가에 대한 것
    }
  ],
  "version": 4
}

 


[3.task.json 파일 생성]

| 목적

tasks.json 파일은 Visual Studio Code (VSCode)에서 프로젝트 빌드, 테스트, 실행 등의 외부 작업을 구성하고 관리하는 데 사용됩니다. 이 파일을 사용하면 다양한 작업을 자동화하고, 코드 편집기 내에서 편리하게 실행할 수 있습니다.

tasks.json 파일은 프로젝트 루트 폴더 내의 .vscode 디렉터리에 위치하며, 

프로젝트별로 별도의 작업 설정을 가질 수 있습니다.

tasks.json 파일의 주요 역할은 다음과 같습니다

 



1.작업 구성: 여러 작업을 정의하고, 각 작업에 대한 명령어, 인수, 실행 디렉터리 등의 설정을 지정할 수 있습니다.

2.빌드 자동화: 코드 컴파일, 링킹, 실행 파일 생성 등의 빌드 작업을 자동화하고, 단축키를 사용하여 빠르게 빌드할 수 있습니다.

3.테스트 자동화: 단위 테스트, 통합 테스트 등의 테스트 작업을 자동화하고, VSCode 내에서 직접 테스트 결과를 확인할 수 있습니다.

4.문제 발견 및 해결: 작업 실행 중 발생하는 에러나 경고를 자동으로 감지하고, 문제 일치자 (problemMatcher)를 사용하여 코드 내 해당 위치로 이동하여 수정할 수 있습니다.

5.커스텀 작업 실행: 사용자 정의 스크립트나 명령어를 작업으로 설정하고, VSCode 내에서 편리하게 실행할 수 있습니다.


{
  "tasks": [
    {
      "type": "shell",
      "label": "gcc_build_vscode",
      "command": "gcc",
      "args": [
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBaseNoExtension}.exe"
      ],
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    },
    {
      "type": "shell",
      "label": "gcc_vscode_Run",
      "command": "cmd",
      "args": ["/C", "${fileDirname}\\${fileBaseNoExtension}.exe"],
      "problemMatcher": ["$gcc"],
      "group": { "kind": "test", "isDefault": true }
    }
  ]
}

 

 

아래 옵션은 필요한 부분만 한번 읽어보시면 될 것 같습니다.

 

 

[옵션 설명]


[type]

type 속성은 작업을 어떻게 실행할지, 어떤 유형의 실행 환경을 사용할지 결정하는데 사용됩니다. 속성값들 여러가지가 있고,

몇가지 예시를 들어보겠습니다. 

1)shell:

이 유형의 작업은 셸 명령어를 실행합니다. 명령어는 커맨드라인 인터페이스 (CLI)에서 실행될 수 있는 모든 명령어가                 

될 수 있으며, 예를 들어 Bash, PowerShell, CMD 등의 셸을 사용하여 실행됩니다.

2)process:

이 유형의 작업은 특정 실행 파일을 직접 실행합니다. 실행 파일은 컴파일된 바이너리 파일,
                   
스크립트 인터프리터 등이 될 수 있습니다.  이 유형의 작업은 셸 없이 직접 프로세스를 실행합니다.

3)npm:

이 유형의 작업은 npm 스크립트를 실행합니다. package.json 파일에 정의된 npm 스크립트를 사용하여 
             
Node.js 프로젝트의 빌드, 테스트, 실행 등을 수행할 수 있습니다.

4)gulp:

이 유형의 작업은 Gulp 작업 실행기를 사용하여 Gulp 작업을 실행합니다. 
           
Gulpfile에 정의된 작업을 수행하여 프론트엔드 빌드 및 자동화 작업을 실행할 수 있습니다.



[label]

tasks.json 파일에서 각 작업을 구분하고 식별하는 데 사용됩니다. label은 작업의 이름을 나타내며, 고유하게 설정되어야
합니다.  다양한 작업을 정의하고 관리할 때, label을 사용하여 원하는 작업을 쉽게 찾고 실행할 수 있습니다

[command 와 args]

command 속성은 작업을 실행할 때 사용되는 명령어를 나타냅니다

그리고 그 뒤 args는 command와 함께 사용될 명령어 인수입니다.

현재 이 tasks.json파일에서는 shell에서 명령어가 실행되고 gcc가 실행되므로 

터미널에서 gcc -g ${file} -o ${fileDirname}/${fileBasenameNoExtension}.out 와 같은 의미가 됩니다.

args 속성에는 다음 인수들이 나열되어 있습니다


"-g": 디버깅 정보를 포함하여 컴파일합니다.

"${file}": 현재 활성화된 파일의 경로를 나타냅니다.

"-o": 출력 파일의 이름을 지정하는 옵션입니다.

"${fileDirname}/${fileBasenameNoExtension}.out": 출력 파일의 경로와 이름을 나타냅니다.

   -${fileDirname}은 현재 파일의 디렉터리 경로를 나타내고,

   -${fileBasenameNoExtension}은 확장자를 제외한 현재 파일의 기본 이름을 나타냅니다.


[problemMatcher]


problemMatcher 속성은 작업의 출력에서 오류, 경고, 정보 메시지 등을 자동으로 탐지하고 파싱하여

VSCode의 문제 패널에 표시하는 데 사용됩니다. 이를 통해 개발자들이 실시간으로 코드의 문제를 확인하고

수정할 수 있습니다.

여기선 "gcc"로 설정되어있는데 이는 GCC 컴파일러의 출력 포맷을 사용한다는 의미입니다.

그리고 컴파일 과정에서 발생하는 문제를 VSCode의 문제 패널에 자동으로 표시하기 위한 설정입니다.

문제가 발견되면 해당 파일과 위치에 대한 링크를 클릭하여 바로 문제가 있는 코드로 이동할 수 있습니다


또한 problemMatcher는 다양한 표준 출력 포맷을 인식하고 파싱할 수 있는 정규식 기반의 패턴입니다. 

기본 제공되는 problem matcher나 사용자 지정 problem matcher를 사용할 수 있습니다.

다음은 몇 가지 기본 제공되는 problemMatcher 값입니다


"$gcc": GCC 컴파일러의 출력을 파싱합니다.

"$msCompile": MSBuild 출력을 파싱합니다.

"$tsc": TypeScript 컴파일러의 출력을 파싱합니다.

"$eslint-stylish": ESLint의 stylish 포맷터 출력을 파싱합니다.

"$go": Go 컴파일러의 출력을 파싱합니다.


[group의 kind 값]


group 속성은 작업(task)을 특정 그룹으로 분류하거나 기본 작업으로 설정하는 데 사용됩니다. 

작업 그룹은 작업을 카테고리별로 구분하고 조직화하여, 프로젝트에서 다양한 종류의 작업을 쉽게 관리하고

실행할 수 있습니다. group 속성은 다음과 같은 옵션들을 포함합니다:


1)kind
:

작업을 분류하는데 사용되는 그룹의 종류를 나타냅니다. kind 값은 build, test, clean 및 rebuild 등이 일반적으로 사용됩니다. 

이러한 키워드를 사용하면 Visual Studio Code는 어떤 작업을 실행할지 알 수 있으며, 

이를 통해 빌드, 테스트, 클린 및 리빌드 작업을 지원할 수 있습니다.`


-build: 이 값은 주로 소스 코드를 컴파일하고 실행 가능한 프로그램을 생성하는 데 사용되는 작업을 
         나타냅니다.일반적으로 코드 변경 후 빌드를 수행하여 프로젝트를 빌드하거나 업데이트합니다.

-test: 이 값은 주로 단위 테스트, 통합 테스트 또는 기타 테스트를 실행하는 데 사용되는 작업을 
        나타냅니다.프로젝트의 테스트 케이스를 실행하여 코드가 예상대로 동작하는지 확인합니다.

-clean: 이 값은 빌드 과정에서 생성된 임시 파일, 객체 파일, 실행 가능한 파일 등을 제거하는 데 
         사용되는 작업을 나타냅니다.프로젝트의 빌드 출력을 정리하여 새로운 빌드를 준비합니다.

-rebuild: 이 값은 빌드 출력을 제거한 후 (clean 작업) 프로젝트를 다시 빌드하는 작업을 나타냅니다. 
             프로젝트를 처음부터 다시 빌드하려는 경우에 유용합니다.

2) isDefault: 

작업을 해당 그룹의 기본 작업으로 설정할지 여부를 나타내는 불리언 값입니다. 이 속성이 true로 설정되면,

해당 작업이 해당 그룹의 기본 작업으로 지정됩니다. 기본 작업은 단축키를 사용하여 빠르게 실행할 수 있습니다.



 

 


[4.빌드 단축키 설정]

tasks.json에서 group의 kind에 해당하는 작업들 단축키를 설정하는 과정입니다.

 

crtl k s를 눌러  key binding을 설정하시면 됩니다.

1)tasks.build 키설정(소스코드 exe 실행파일 빌드 단축키)

  build.tasks라고 입력하고 키바인딩을 눌러 키 설정을 해줍니다(전 ctrl shift b로 설정했습니다)

tasks의 build task 단축키 설정

2) (exe 파일 실행 단축키)

     tasks test 라고 입력 훈 단축키 설정

     (전 shift b로 단축키 설정했습니다.)

 

tasks.json의 test task 단축키 설정

 


[참고사이트]

https://huilife.tistory.com/entry/VSCode-%EC%84%A4%EC%A0%95-3-CC-%EB%B9%8C%EB%93%9C-%EB%B0%8F-%EC%8B%A4%ED%96%89-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

VSCode 설정 - (3) C/C++ 빌드 및 실행 설정하기

예전 티스토리에 있던 글을 옮기다가 갑자기 기록해놓고 싶은 커스텀이 생각나서 적어본다. > 그렇게 옛날 티스토리의 글을 열심히 벨로그로 옮기던 나는 다시 티스토리로 회귀하여 벨로그의

huilife.tistory.com

 

https://jhnyang.tistory.com/440

 

[VSCode] C/C++ 개발환경 세팅하기, 비주얼코드 c_cpp_properties.json, tasks.json 설정

안녕하세요 양햄찌 블로그 주인장입니다. 오늘은 VSCode에서 C/C++ 개발환경 세팅하는 방법에 대해 알아볼거예요. Visual Studio Code 윈도우 C/C++개발을 위한 설정 세팅 1. 필요한 익스텐션 2. c_cpp_properti

jhnyang.tistory.com

 

https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

 

c_cpp_properties.json reference

Schema reference for C++ project settings in Visual Studio Code.

code.visualstudio.com

https://velog.io/@hwang-chaewon/VScodeVScode%EC%97%90%EC%84%9C-CC%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0

 

[VScode]VScode에서 C/C++ 환경 만들기

0. 환경 구축 전... > 컴파일, 디버깅, 빌드의 차이가 무엇일까? VScode에서 C/C++환경을 구축하며 .c코드를 실행시켜보기 위해 삽질을 하면서 든 의문이다. 부끄럽지만 그동안 코드를 계속 쓰면서도

velog.io