macOS, 컨테이너는 debian:bookworm 환경에서 작성된 글입니다.

 

VScode에서 도커 컨테이너 접속하기 (Dev Containers)

macOS에서 작성된 글입니다. vscode에서 Remote Development 확장 설치WSL, Dev Containers, Remote - SSH, Remote - Tunnels가 포함된 세트다. 이제 두가지 경우가 있다.컨테이너가 이미 올라가 있는 경우쉬프트 + 커맨

dodontak.tistory.com

vscode에서 컨테이너에 연결하는건 위 글에서 알아보자.


문제 발생

vscode의 자동완성 기능인 IntelliSense를 원래는 컨테이너에 C/C++ 익스텐션을 설치해서 사용하고있었다.

 

그런데 어이없는게, 잘 되다가 어느날 갑자기 안되더니 완전히 새로운 이미지, 컨테이너에서 다시 실행해봐도 안됐다. 

어제랑 똑같이 쓰고있는데 갑자기 자동완성이 안되니 그날은 하루종일 문제를 해결해보려 했는데, 스택오버플로우에서 비슷한 문제를 겪은 글을 봤는데 이 문제는 vscode의 버그 이고, 해결법은 답변자도 모르고 우회법으로 인텔리센스를 그냥 tag parser로 바꾸라고 했다.

 

Why is visual studio code telling me that cout is not a member of std namespace?

I am trying to setup visual studio code to program in c++. I have already installed the extensions C/C++ and C/C++ Intellisense Following is my code: #include<iostream> using namespace std;...

stackoverflow.com

 

tag parser로 바꾸니까 자동완성이 되긴 되는데 전혀 컨텍스트를 읽지 못하고 그냥 그 문자열로 시작하는 아무 자동완성이나 추천해주는 매우 크나큰 문제가 있었다. 사실상 있으나 마나 한것.

 

그래서 좀 더 알아보니 clangd라는걸로 해결을 할 수 있다 하여 사용해봤는데 깔끔하게 해결이 됐다.

해결 방법

clangd 확장 설치

컨테이너에 clangd를 설치한다. (컨테이너에 확장을 자동설치하는 방법은 맨위에 첨부한 글을 보자.)

clangd 패키지 설치

컨테이너 터미널에서 clangd 를 apt install로 설치한다.

apt install -y clangd

vscode 창 다시 로드

그리고 커맨드 + 쉬프트 + p로 vscode 창을 다시 로드한다.

해결 완료

그러면 자동완성이 아름답게 잘 된다.

 

정리하고 나니 며칠동안 날 괴롭힌 문제 치고는 쉽게 해결됐다...


추가로 기본 clangd의 자동정렬 기능(옵션+쉬프트+F)이 탭이 스페이스 2개라서 이걸 고쳐봤다.

프로젝트 폴더에 .clang-format 파일을 추가하자.

BasedOnStyle: Google
IndentWidth: 4

그럼 이제 자동정렬 시에 탭이 스페이스 4개로 처리된다.

+ Recent posts