Search
Duplicate
💿

vscode clangd 설정

간단소개
vscode에서 clangd를 설정하는 방법!
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C
C++
개발환경
태그
clangd
개발환경
c언어
c++
Scrap
8 more properties

clangd 장점

우선 설정하기 전에, 왜 굳이 Microsoft의 C/C++ 확장이 있는데 clangd를 사용하는지 간단히 알아보자면…
clangd에는 Microsoft의 C/C++ 확장에는 없는, include 자동완성이나 inlay hint 등의 다양한 기능이 있습니다!

clangd 확장 설치

vscode의 extension marketplace (cmd + shift + x)에서 clangd를 설치해주세요.
그 다음에 아무 C/C++ 파일을 열면 clangd language server를 설치하라는 알림이 나오는데,
install 버튼을 누르면 자동으로 설치됩니다.
clangd가 이미 설치된 경우에는 해당 알림이 뜨지 않을 수 있습니다.
터미널에서 clangd --version을 입력했을 때 뭔가 나온다면 이 과정은 생략할 수 있습니다.
clangd 설치가 완료되면 Reload window 버튼을 누르면 vscode에 대한 설정은 끝납니다.

extension 추가 설정

command palette(F1, 또는 cmd + shift + P)에서 Preferences: Open Settings (JSON)으로 설정을 열어주세요.
그리고 아래 세 줄을 추가해주세요.
"clangd.detectExtensionConflicts": false, // 프로젝트별 설정인 경우 필요 "C_Cpp.autocomplete": "Disabled", "C_Cpp.intelliSenseEngine": "Disabled",
JSON
Microsoft의 C/C++ 확장과 같이 사용하기 위한 설정입니다.

프로젝트별 설정

clangd는 설정파일이 따로 없어도 잘 동작합니다.
하지만 include directory 등 별도의 설정이 있는 경우에는 compile_commands.json 파일이 필요합니다.
컴파일러로 clang을 사용한다면 clangd에서 사용하는 compile_commands.json을 쉽게 생성할 수 있습니다.

clang의 -MJ 옵션

OBJS := main.o sub1.o sub2.o NAME := test CC := clang $(NAME): $(OBJS) %.o: %.c $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< -MJ $@.part.json
Makefile
clang의 -MJ 옵션을 사용하는 Makefile 예시
clang에 -MJ 옵션을 사용하면 compile_commands.json의 일부가 되는 json 파일이 생성됩니다.

compile_commands.json 규칙

.PHONY: compile_commands.json compile_commands.json: -$(MAKE) --always-make --keep-going all (echo '[' && cat *.part.json && echo ']') > $@
Makefile
compile_commands.json 규칙 예시
make를 한 번 실행한 이후에 -MJ 옵션으로 생성된 모든 json 파일들을 하나로 합치면 compile_commands.json을 만들 수 있습니다.