본문 바로가기

프로그래밍/C-CPP

vscode 에서 clang-format 으로 c/cpp 소스코드 포매팅하기

반응형

vscode 로 c/cpp 소스코드를 clang-format 과 .clang-format 설정파일로 포매팅하는 설정을 해 봤다.

https://medium.com/@wedevelop21/how-to-integrate-clang-format-with-visual-studio-code-5ae64a36f54e

 

How to integrate clang-format with Visual Studio Code?

For those who bother about quick and easy formatting of their code

medium.com

위 사이트에 스탭1, 2, 3 으로 잘 나와 있어서 따라할 수 있었다.

이걸 한글로 다시 쓰고, 내가 따라하면서 헤맸던 부분을 추가하겠다.

링크된 포스팅에서는 3단계로 설명을 한다.

  • 1단계: clang-format 툴을 설치한다.
  • 2단계: clang-format 설정파일을 만든다.
  • 3단계: vscode 확장 중에 xaver 라는 사람이 만든 clang format externsion 을 설치한다.

1단계 에서

clang-format 툴은 https://llvm.org/builds/ 에서 다운받아 설치하라고 안내했다. 나는 이미 mingw 툴을 깔면서 깔려 있던 것이 있었고, 또, visual studio 2022 가 설치되어 있어서, 개발툴 실행파일 폴더에도 있었다. (어디에 있는지 찾느라고, 컴퓨터 전체에서 clang-format.exe 파일을 검색했다. listary 라는 툴로 빠르게 가능)

전에 한번 시도했을 때, clang-format.exe 의 버전마다 지원하는 설정의 범위가 달라서, 이 두가지 실행파일의 버전을 `clang-format --version` 명령으로 확인해 봤다. 다행히 둘 다 비교적 최신버전인 18.1.x 버전이었다.

clang-format.exe 가 있는 위치는 잘 기억해 두었다가, vscode 확장 설정에 입력해 넣어야 한다. (아마 이게 가장 중요함)

2단계에서

clang-format 은 내가 원하는 옵션으로 소스코드 포매팅을 강제하고, 이걸 팀에게 강제할 수 있는 것이기 때문에, 단순히 기본 포매팅옵션이 아닌, 팀의 입맛에 맞는 옵션 설정들을 찾아야 한다. clang-format 은 강력한 만큼, 설정도 아주아주 복잡하다. 다큐멘테이션을 읽는 것도 중요하겠지만, 처음 문서를 보면 너무 압도되어 손을 댈 수가 없다. 이 때 필요한 것은, 예제와 옵션에 따라 어떻게 바뀌는지 감을 잡게 해 주는 툴.

웹사이트로 존재한다, 위 링크의 포스팅에서는 다른 사이트링크가 있지만, 오래된 것이고,  https://clang-format-configurator.site/ 이곳이 더 좋다. 최근버전의 clang-format 설정값들까지 지원한다. 여기서 이것저것 바꾸어서 입맛에 맞는 포맷을 정하여 config-file 을 다운로드 받는다.

3단계에서

위 링크에서는 단순히 vscode 확장 검색에서 clang-format 을 검색하고, xaver 라는 사람이 만든 clang-format 을 설치하라고 까지만 나와 있다.

하지만, 그냥 설치만 해서는 안 되고, clang-format.exe 의 경로를 설정해 주어야 한다. (clang-format 툴을 설치하면서 PATH 설정해 주었으면 그냥 됐을 것 같기는 하다.)

vscode 설정 ( settings 메뉴) 에서 clang-format 으로 필터링해서, clang-format executable path 에 설정.

위에 처럼 설정하면 됐는데, 내 경우는 clang-format 확장과 microsoft 의 c/c++ 확장이 같이 설치되어 있어서, C/C++ - Formatting 부분에도 clang-format 실행파일 설정란이 있었다. 처음에 clang-format.exe 의 경로를 이곳에 잘못 입력해 놓아서 계속 안 됐었다. 주의해야 한다.

나중에 생각은, 꼭 xaver 의 clang-format 확장을 깔 필요가 있을까 하는 것이었다. c/c++ 만의 포맷을 위해서는 ms 의 c/c++ 확장으로 충분한가?

아무튼 이것이 오늘의 삽질.

추신 : 아, 그리고, .clang-format 설정파일을 만들 때, chat-gpt 에게 질문을 해보니 답변을 해준다. 활용해 보면 좋을 것이다.

 

 

 

 

728x90