ctags 함수 정의 못찾는 경우

백엔드&인프라 추종자·2025년 11월 9일

아, 정우님. 😄 Universal Ctags에서 함수 정의를 제대로 잡지 못하는 경우, 보통 C/C++ 관련 옵션언어/파싱 설정 문제입니다. 기본적으로 헤더 선언만 잡고 구현 함수 정의는 못 찾는 경우가 많아요.

1️⃣ 기본 예제

ctags -R --languages=C,C++ --c-kinds=+p .
  • -R : 재귀적으로 디렉토리 탐색
  • --languages=C,C++ : C/C++ 언어만
  • --c-kinds=+p : p = 프로토타입/함수 포함. 기본값으로는 함수 정의가 빠질 수 있음.
  • 만약 정의 + 선언 모두 포함하고 싶으면:
ctags -R --languages=C,C++ --c-kinds=+p+f .
  • f : 함수 정의

2️⃣ 소스와 헤더를 모두 잡도록

Ctags는 기본적으로 헤더(.h)는 잡는데, .c/.cpp 파일 안 구현 함수까지 잡으려면 파일 확장자 옵션을 명시:

ctags -R --languages=C,C++ --c-kinds=+p+f --extras=+q .
  • --extras=+q : 함수 프로토타입과 퀄리파이어 포함

3️⃣ Makefile 등과 연동

  • 일부 프로젝트는 #include나 매크로 때문에 함수 위치를 잘 못 잡기도 합니다.
  • 이럴 때는 --fields=+S 옵션을 주면 함수 시그니처까지 추적 가능:
ctags -R --languages=C,C++ --c-kinds=+p+f --fields=+S .

💡 팁: Universal Ctags는 정의 vs 선언을 구분해서 태그를 생성하므로, 정의만 보고 싶으면 --c-kinds=f 만 줘도 됩니다.


원하시면 제가 정우님 프로젝트(mediaforge/ffmpegd) 기준으로 최적 ctags 명령어 만들어서 바로 함수까지 다 잡게 설정해 드릴 수도 있어요.
그거 해드릴까요?

profile
AI 답변 글을 주로 올립니다.

0개의 댓글