diff --git a/AGENTS.md b/AGENTS.md index 3a9efd8..6ff7b51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,7 +15,6 @@ - `src/application` - `src/domain` - `src/engine` -- Each layer may further split into `include/` and `src/` under its own root. - When touching build files, confirm that referenced source files are actually tracked in Git. ## Build @@ -29,7 +28,8 @@ ## Source Layout - All C++ source files live under `src/`. -- Split each layer so headers live under `src//include//` and source files live under `src//src/`. +- Keep each layer's headers and source files directly under `src//` unless a clear need for subfolders appears. +- Use `src/` as the include root. - Preferred includes: - `#include "application/..."` - `#include "domain/..."` diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d56db7..3247c35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,33 +32,35 @@ function(configure_project_target target_name) set_property(TARGET ${target_name} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") endfunction() +set(SAFECROWD_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") + add_library(ecs_engine STATIC - src/engine/include/engine/EngineConfig.h - src/engine/include/engine/EngineRuntime.h - src/engine/include/engine/EngineState.h - src/engine/include/engine/EngineStats.h - src/engine/include/engine/EngineStepContext.h - src/engine/include/engine/EngineSystem.h - src/engine/include/engine/FrameClock.h - src/engine/src/EngineRuntime.cpp - src/engine/src/FrameClock.cpp + src/engine/EngineConfig.h + src/engine/EngineRuntime.h + src/engine/EngineState.h + src/engine/EngineStats.h + src/engine/EngineStepContext.h + src/engine/EngineSystem.h + src/engine/FrameClock.h + src/engine/EngineRuntime.cpp + src/engine/FrameClock.cpp ) target_include_directories(ecs_engine PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/src/engine/include + ${SAFECROWD_SRC_DIR} ) configure_project_target(ecs_engine) add_library(safecrowd_domain STATIC - src/domain/include/domain/SafeCrowdDomain.h - src/domain/src/SafeCrowdDomain.cpp + src/domain/SafeCrowdDomain.h + src/domain/SafeCrowdDomain.cpp ) target_include_directories(safecrowd_domain PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/src/domain/include + ${SAFECROWD_SRC_DIR} ) target_link_libraries(safecrowd_domain @@ -94,14 +96,14 @@ endif() if (SAFECROWD_BUILD_APP) add_executable(safecrowd_app - src/application/include/application/MainWindow.h - src/application/src/main.cpp - src/application/src/MainWindow.cpp + src/application/MainWindow.h + src/application/main.cpp + src/application/MainWindow.cpp ) target_include_directories(safecrowd_app PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src/application/include + ${SAFECROWD_SRC_DIR} ) set_target_properties(safecrowd_app PROPERTIES diff --git "a/docs/\355\224\204\353\241\234\354\240\235\355\212\270 \352\265\254\354\241\260.md" "b/docs/\355\224\204\353\241\234\354\240\235\355\212\270 \352\265\254\354\241\260.md" index 5071cd2..0f07534 100644 --- "a/docs/\355\224\204\353\241\234\354\240\235\355\212\270 \352\265\254\354\241\260.md" +++ "b/docs/\355\224\204\353\241\234\354\240\235\355\212\270 \352\265\254\354\241\260.md" @@ -44,14 +44,8 @@ Project/ vcpkg.json src/ engine/ - include/engine/ - src/ domain/ - include/domain/ - src/ application/ - include/application/ - src/ external/ docs/ ``` @@ -180,12 +174,12 @@ Qt viewport가 엔진 렌더러와 직접 연결되어야 하면 `application -> ### 7.1. 소스 루트 원칙 - 모든 C++ 소스와 헤더는 `src/` 아래에 둔다. -- 각 계층은 `src//include//`에 헤더를, `src//src/`에 구현 파일을 둔다. +- 각 계층의 헤더와 구현 파일은 기본적으로 `src//` 바로 아래에 둔다. - 따라서 include는 `#include "engine/..."`, `#include "domain/..."`, `#include "application/..."` 형태를 사용한다. ### 7.2. CMake 원칙 - `CMakeLists.txt`의 타깃 소스 경로는 항상 `src/...`를 기준으로 적는다. -- 각 타깃의 include directory는 해당 계층의 `src//include/`를 공개 루트로 잡는다. +- include directory는 `src/`를 공통 공개 루트로 잡는다. - 계층이 늘어나도 당분간 루트 `CMakeLists.txt` 하나에서 관리하고, 타깃 수와 파일 수가 커질 때만 하위 `CMakeLists.txt`를 추가한다. ### 7.3. 외부 의존성 원칙 diff --git a/src/application/src/MainWindow.cpp b/src/application/MainWindow.cpp similarity index 100% rename from src/application/src/MainWindow.cpp rename to src/application/MainWindow.cpp diff --git a/src/application/include/application/MainWindow.h b/src/application/MainWindow.h similarity index 100% rename from src/application/include/application/MainWindow.h rename to src/application/MainWindow.h diff --git a/src/application/src/main.cpp b/src/application/main.cpp similarity index 100% rename from src/application/src/main.cpp rename to src/application/main.cpp diff --git a/src/domain/src/SafeCrowdDomain.cpp b/src/domain/SafeCrowdDomain.cpp similarity index 100% rename from src/domain/src/SafeCrowdDomain.cpp rename to src/domain/SafeCrowdDomain.cpp diff --git a/src/domain/include/domain/SafeCrowdDomain.h b/src/domain/SafeCrowdDomain.h similarity index 100% rename from src/domain/include/domain/SafeCrowdDomain.h rename to src/domain/SafeCrowdDomain.h diff --git a/src/engine/include/engine/EngineConfig.h b/src/engine/EngineConfig.h similarity index 100% rename from src/engine/include/engine/EngineConfig.h rename to src/engine/EngineConfig.h diff --git a/src/engine/src/EngineRuntime.cpp b/src/engine/EngineRuntime.cpp similarity index 100% rename from src/engine/src/EngineRuntime.cpp rename to src/engine/EngineRuntime.cpp diff --git a/src/engine/include/engine/EngineRuntime.h b/src/engine/EngineRuntime.h similarity index 100% rename from src/engine/include/engine/EngineRuntime.h rename to src/engine/EngineRuntime.h diff --git a/src/engine/include/engine/EngineState.h b/src/engine/EngineState.h similarity index 100% rename from src/engine/include/engine/EngineState.h rename to src/engine/EngineState.h diff --git a/src/engine/include/engine/EngineStats.h b/src/engine/EngineStats.h similarity index 100% rename from src/engine/include/engine/EngineStats.h rename to src/engine/EngineStats.h diff --git a/src/engine/include/engine/EngineStepContext.h b/src/engine/EngineStepContext.h similarity index 100% rename from src/engine/include/engine/EngineStepContext.h rename to src/engine/EngineStepContext.h diff --git a/src/engine/include/engine/EngineSystem.h b/src/engine/EngineSystem.h similarity index 100% rename from src/engine/include/engine/EngineSystem.h rename to src/engine/EngineSystem.h diff --git a/src/engine/src/FrameClock.cpp b/src/engine/FrameClock.cpp similarity index 100% rename from src/engine/src/FrameClock.cpp rename to src/engine/FrameClock.cpp diff --git a/src/engine/include/engine/FrameClock.h b/src/engine/FrameClock.h similarity index 100% rename from src/engine/include/engine/FrameClock.h rename to src/engine/FrameClock.h