19.2.3.1. `msg/CMakeLists.txt`의 `set(msg_files ...)` 리스트에 신규 메시지 추가

19.2.3.1. msg/CMakeLists.txtset(msg_files ...) 리스트에 신규 메시지 추가

단순히 msg/ 디렉토리에 세상에서 가장 아름답게 바이트 패킹되고 단위 주석이 훌륭한 무결점의 SensorTestData.msg 텍스트 파일을 던져놓는다 한들, 거대하고 무자비한 PX4 빌드 생태계 컴파일러(Compiler) 시스템 링커 계층에서 바라볼 때 그것은 존재 자체가 인식되지 않는 이름 없는 유령 쓰레기 파일과 1%도 다름없다. 이 하드코어한 시스템의 모든 소스코드 객체 번역 파이프라인(Translation Pipeline)은 트리 구조로 명시된 CMake 링킹 리스트 텍스트에 강박적으로, 그리고 편집증적으로 의존하여 동작하기 때문이다.

우리의 이 새롭고 피가 통하는 C++ 통신 구조체 설계도가 런타임 컴파일 과정에서 정식으로 코어 메모리 혈관을 배정받기 위해 치러야 할 가장 첫 번째이자 절대적인 세례 의식은, 바로 메인 메시지 제너레이터 컴파일 리스트의 깊은 속살을 가르고 이 파일의 서명을 하드코딩하여 타설해 넣는 파괴적 행위이다.

1. 시스템 중앙 레지스트리 msg/CMakeLists.txt 해킹(Hacking)과 결속

PX4 펌웨어 소스 트리의 근간 유전자이자, 모든 uORB 메시지 번역 스크립트 엔진을 하나로 모아 묶어 총괄하는 절대적 중앙 마스터 리스트가 바로 소스 깊은 곳의 msg/CMakeLists.txt 파일이다. 이 스크립트를 에디터로 조심스럽게 열어보면 수십 수백 개에 달하는 기존의 공고한 코어 비행 상태 메시지 스키마(actuator_controls.msg, vehicle_status.msg 등)들이 아득하고 촘촘하게 배열 명단 탑(Tower) 구조에 빼곡히 등재되어 있는 것을 전율과 함께 목격할 수 있다.

이 거대한 명단의 배를 과감하게 가르고, 다음과 같이 우리가 방금 전 한 땀 한 땀 창조한 커스텀 메시지의 파일명을 단 1바이트의 오타 없이 정확히 주입한다.

# msg/CMakeLists.txt 파일 내부의 거대한 msg_files 배열 탐색 및 뇌수술 수정

set(msg_files
    ActionRequest.msg
    ActuatorArmed.msg
    ActuatorControls.msg
    # ... (기존 수백 개의 핵심 비행 제어기 메시지들 생략) ...
    SensorCombined.msg
    SensorCorrection.msg
    SensorGyro.msg
    # --- [우리가 새로 타설한 커스텀 메시지 명세를 정식 코어 배열 스택에 합류 주입시킨다] ---
    SensorTestData.msg
    # ----------------------------------------------------------------------------------
    SystemPower.msg
    TaskStackInfo.msg
    VehicleAcceleration.msg
    # ...
)

2. 알파벳 정렬(Alphabetical Order)의 암묵적이고 가혹한 코딩 컨벤션

여기서 흥분한 초보 시스템 개발자가 저지르는 가장 흔하고 비참한 실수는, 자신이 머리를 쥐어짜 만든 이 새로운 메시지가 너무나 자식처럼 자랑스럽고 눈에 확 잘 띄게 하고 싶은 우쭐한 마음에, 그것을 무식하게 set(msg_files ...) 리스트의 맨 첫 줄 옥좌 장소에 기괴하게 쑤셔 넣거나 맨 밑바닥 끄트머리에 대충 갈겨 적어 넣는 돌발 행위이다.
PX4 코어 팀의 살벌한 코딩 컨벤션 스탠다드(Coding Convention Standard) 룰은 이러한 프로그래머의 개인적 난잡함과 무질서를 단 1바이트도 절대로 용납하지 않는다. 수백수십 명의 글로벌 탑티어 개발자(Contributor)가 밤낮없이 협업하는 시스템 환경에서, 이 배열 리스트 덩어리는 **무조건 철저하고 파시스터(Fascist)적인 알파벳 순서 정렬(Alphabetical Order)**을 지배적으로 복종하고 따라야만 한다.

따라서 Sensor 계열 메시지 단어들이 밀집해 있는 ‘S’ 텍스트 이니셜의 한복판에 가장 우아하고 조용히 스며들듯 SensorTestData.msg 파일명을 정확히 삽입해야 한다. 만약 개발자가 이 절대적 알파벳 정렬 규칙을 오만하게 어기고 마스터 저장소에 Pull Request(PR)를 날린다면, 1분도 되지 않아 자비 없는 CI/CD 품질 봇(Github Action Bot)이 자동 빌드 검증 단계에서 즉각 “리스트 정렬 불량(List Sorting Error)“이라는 시뻘건 규정 위반 에러를 토해내며 당신이 혼을 담은 코드를 영안실로 가차 없이 반려(Reject) 처단해 버릴 것이다.

이 치밀한 한 줄의 텍스트 변수 삽입 작업이 룰에 맞게 에러 없이 무사히 저장(Save)되는 순간, 당신의 메시지는 더 이상 디스크의 단순 텍스트 쪼가리를 아득히 넘어섰다. 픽스호크 메인 펌웨어를 전체 장악하는 가장 강력한 빌드 시스템 시스템 매크로 엔진의 레이더망에 합법적인 핵심 오브젝트로 락온(Lock-on) 노출되었으며, 이제 다음 단계인 파이썬 제너레이터(Python Generator)의 제물로 갈갈이 찢어져 바쳐질 모든 문법적 준비를 가장 완벽하게 마친 것이다.