# 헤드리스 프로젝트 PCH 아키텍처 개선 ## ✅ **헤드리스 프로젝트 PCH 아키텍처 개선** (2025-09-21) ### **새로운 PCH 구조** 기존의 조건부 컴파일 방식에서 별도 디렉토리 기반 PCH로 개선하여 소스 코드 복잡성을 제거했습니다. #### **구조 변경사항** ``` D:\Project\video-av1\vav2\Vav2Player\Vav2Player\ ├── pch.h / pch.cpp # WinUI3 GUI용 PCH (기존) ├── headless/ # 🆕 헤드리스 전용 디렉토리 │ ├── pch.h # 헤드리스 전용 PCH │ └── pch.cpp # PCH 생성 파일 └── src/ # 공통 소스 코드 └── **/*.cpp # 조건부 컴파일 제거 (#include "pch.h"만 사용) ``` #### **장점** - **소스 코드 단순화**: 모든 .cpp 파일에서 `#include "pch.h"`만 사용 - **조건부 컴파일 제거**: `#ifdef HEADLESS_BUILD` 분기 처리 불필요 - **빌드 설정 단순화**: 프로젝트별 Include 경로로 pch.h 자동 선택 - **유지보수성 향상**: GUI/헤드리스 모드 간 의존성 완전 분리 #### **빌드 설정** **Vav2Player.vcxproj** (GUI 프로젝트): ```xml Use pch.h ``` **Vav2PlayerHeadless.vcxproj** (헤드리스 프로젝트): ```xml Use pch.h $(ProjectDir)headless;... ``` #### **헤드리스 PCH 내용** ```cpp #pragma once #define WIN32_LEAN_AND_MEAN #define NOMINMAX #include #include // ... 표준 라이브러리 extern "C" { #include } #include // Media Foundation (minimal) #include // D3D12 (minimal) #include "../src/Common/VideoTypes.h" ``` #### **검증 완료** ✅ **빌드 성공**: Vav2PlayerHeadless.vcxproj 빌드 완료 ✅ **실행 확인**: 헤드리스 앱 정상 동작 확인 ✅ **의존성 분리**: WinUI3 의존성 완전 제거 이제 헤드리스 프로젝트는 더 깔끔한 아키텍처로 관리되며, 향후 새로운 소스 파일 추가 시에도 조건부 컴파일 없이 바로 사용할 수 있습니다. ### **🗂️ 헤드리스 파일 재구성** (2025-09-21) 헤드리스 관련 모든 파일을 `headless/` 디렉토리로 통합하여 더욱 체계적인 프로젝트 구조를 구현했습니다. #### **완료된 파일 재구성** ``` D:\Project\video-av1\vav2\Vav2Player\Vav2Player\headless\ ├── pch.h # 헤드리스 전용 PCH 헤더 ├── pch.cpp # PCH 생성 파일 ├── SimpleHeadlessMain.cpp # ✅ 현재 사용 중인 메인 엔트리 포인트 ├── HeadlessLauncher.cpp # 고급 헤드리스 런처 (예비) ├── HeadlessMain.cpp # 완전한 테스트 러너 (예비) └── HeadlessDecoder.h/.cpp # 헤드리스 디코더 래퍼 (예비) ``` #### **장점** - **명확한 구조**: 헤드리스 관련 모든 파일이 한 곳에 집중 - **독립성 강화**: GUI 프로젝트와 완전히 분리된 파일 관리 - **확장성**: 향후 헤드리스 기능 추가 시 동일 디렉토리에 배치 - **유지보수성**: 헤드리스 관련 작업 시 단일 디렉토리만 관리 #### **프로젝트 설정 업데이트** - **Vav2PlayerHeadless.vcxproj**: 모든 헤드리스 파일 경로를 `headless\` 기준으로 수정 - **상대 경로 정리**: `../src/` 패턴으로 공통 소스 참조 통일 - **단계적 활성화**: 복잡한 파일들은 주석 처리하여 필요 시 활성화 가능 #### **현재 활성 구성** ```xml ``` #### **빌드 및 테스트 확인** ✅ **빌드 성공**: 재구성된 파일들로 정상 빌드 완료 ✅ **실행 확인**: `Vav2PlayerHeadless.exe` 정상 동작 ✅ **구조 검증**: 모든 헤드리스 파일이 적절한 위치에 배치 이제 헤드리스 관련 모든 작업이 단일 디렉토리에서 체계적으로 관리되며, 프로젝트 구조가 더욱 명확해졌습니다. --- *최종 업데이트: 2025-09-21* *Claude Code로 생성됨*