# 1. 통합 개발 환경(IDE)의 극한 연동 및 코드 탐색 셋업

# 1. 통합 개발 환경(IDE)의 극한 연동 및 코드 탐색 셋업

PX4의 소스 코드는 단일 프로젝트라고 부르기 민망할 정도로 방대하다. 수천 개의 C++ 클래스, 딥러닝 수준의 수학 텐서 행렬 추적, NuttX 운영체제의 헤더까지 엉켜있는 이 밀림에서 vim 이나 nano 같은 구시대 텍스트 편집기만으로 디버깅을 시도하는 것은 엔지니어링 생명 단축의 지름길이다.
VS Code(Visual Studio Code)나 CLion과 같은 현대적 IDE의 ’심볼 추적(Symbol Navigation)’과 ‘코드 자동완성(IntelliSense)’ 그래픽 엔진을 PX4 의존성 구조에 완벽하게 바인딩시키는 초정밀 셋업 기법을 해부한다.

의존성 매핑의 핵심 열쇠: compile_commands.json
C++ 컴파일러(GCC)는 math_func.cpp를 번역할 때 호스트 OS의 /usr/include 부터 가상 환경의 툴체인 경로까지 수백 군데의 인클루드 패스(-I)를 참조한다. 하지만 VS Code 데몬은 바보라서 이 경로들을 알지 못한다. 설정 없이 소스를 열면 온 화면이 “Header Not Found” 빨간 줄로 도배되는 참사를 겪게 된다.
이를 치료하는 유일한 마법의 약이 바로 Compilation Database (compile_commands.json) 파일이다.

개발자가 터미널에 make px4_fmu-v6c_default 를 때릴 때, CMake 내부에서는 모든 파일 각각을 컴파일할 때 사용한 ’정확한 경로와 옵션 플래그’들을 수집하여 build/px4_fmu-v6c_default/compile_commands.json 이라는 거대한 사전 파일로 통째로 덤프(Dump)해 낸다. 이 파일이야말로 소스코드의 모든 혈맥이 기재된 해부학 지도다.

clangd 엔진 심비오시스(Symbiosis) 결합
VS Code의 구형 C/C++ 플러그인은 이 거대한 PX4 레포지토리를 인덱싱하다가 메모리가 터져 죽는 경우가 허다하다. 진정한 하드코어 프로그래머는 이를 제거하고 Apple/LLVM 진영의 궁극의 코드 하이라이트 파서인 clangd 익스텐션을 설치한다.

완벽한 셋업 파이프라인은 다음과 같다.

  1. 터미널에서 CMake 빌드를 한번 온전히 성공시켜 compile_commands.json을 창출한다.
  2. 이 파일을 레포지토리 최상단 루트(Root)로 심볼릭 링크(ln -s)를 걸어 퍼올린다.
  3. VS Code를 재시작하면 백그라운드 데몬인 clangd가 이 json 사전을 집어삼키고 5~10분간 치열한 전처리(Pre-processing) 인덱싱을 수행한다.
  4. 작업이 완료된 후 소스 코드 상의 난해한 uORB 메시지 선언부 VehicleAcceleration 에 마우스를 올리고 Ctrl + Click (Go to Definition)을 누르면, 백만 줄의 코드를 초음속으로 관통하여 자동 생성된 구조체 헤더 파일 한가운데로 당신의 커서를 꽂아버린다.

이 완벽한 심볼 매핑(Symbol Mapping) 셋업이 완료되어야만, 비로소 EKF2 센서 퓨전 방정식의 깊숙한 로직을 끊김 없이 탐험할 수 있는 자격이 주어지는 것이다.