Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -29,7 +28,8 @@

## Source Layout
- All C++ source files live under `src/`.
- Split each layer so headers live under `src/<layer>/include/<layer>/` and source files live under `src/<layer>/src/`.
- Keep each layer's headers and source files directly under `src/<layer>/` unless a clear need for subfolders appears.
- Use `src/` as the include root.
- Preferred includes:
- `#include "application/..."`
- `#include "domain/..."`
Expand Down
36 changes: 19 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
10 changes: 2 additions & 8 deletions docs/프로젝트 구조.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,8 @@ Project/
vcpkg.json
src/
engine/
include/engine/
src/
domain/
include/domain/
src/
application/
include/application/
src/
external/
docs/
```
Expand Down Expand Up @@ -180,12 +174,12 @@ Qt viewport가 엔진 렌더러와 직접 연결되어야 하면 `application ->

### 7.1. 소스 루트 원칙
- 모든 C++ 소스와 헤더는 `src/` 아래에 둔다.
- 각 계층은 `src/<layer>/include/<layer>/`에 헤더를, `src/<layer>/src/`에 구현 파일을 둔다.
- 각 계층의 헤더와 구현 파일은 기본적으로 `src/<layer>/` 바로 아래에 둔다.
- 따라서 include는 `#include "engine/..."`, `#include "domain/..."`, `#include "application/..."` 형태를 사용한다.

### 7.2. CMake 원칙
- `CMakeLists.txt`의 타깃 소스 경로는 항상 `src/...`를 기준으로 적는다.
- 각 타깃의 include directory는 해당 계층의 `src/<layer>/include/`를 공개 루트로 잡는다.
- include directory는 `src/`를 공통 공개 루트로 잡는다.
- 계층이 늘어나도 당분간 루트 `CMakeLists.txt` 하나에서 관리하고, 타깃 수와 파일 수가 커질 때만 하위 `CMakeLists.txt`를 추가한다.

### 7.3. 외부 의존성 원칙
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading