Apollo 技术文档Apollo 技术文档
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
  • 开始

    • 指南
    • 安装
    • 快速开始
  • 基础

    • 核心概念
    • 模块系统
    • 配置

模块系统

Apollo 采用分层模块化架构,每个模块职责清晰,可以独立使用。

模块分层

┌─────────────────────────────────────────────────────────────────┐
│                        Applications                              │
└─────────────────────────────────────────────────────────────────┘
                                ↓
┌──────┬──────┬──────┬──────┬──────────┬──────────┬────────────┐
│  net │ data │ game │ actor│ framework│  runtime │   core     │
└──────┴──────┴──────┴──────┴──────────┴──────────┴────────────┘
                                ↓
┌─────────────────────────────────────────────────────────────────┐
│                        Base                                      │
└─────────────────────────────────────────────────────────────────┘

使用模块

CMakeLists.txt 配置

find_package(apollo-core REQUIRED)
find_package(apollo-net REQUIRED)

target_link_libraries(my_app
    apollo::core
    apollo::net
)

条件加载

if(ENABLE_GAME_MODULE)
    find_package(apollo-game REQUIRED)
    target_link_libraries(my_app apollo::game)
endif()

模块依赖

重要规则:

  • 上层模块可以依赖下层模块
  • 下层模块不能依赖上层模块
  • 同层模块尽量避免相互依赖
base ← core ← runtime ← net/data/game

自定义模块

1. 创建模块目录

modules/
└── mymodule/
    ├── include/
    │   └── apollo/
    │       └── mymodule/
    │           └── api.hpp
    ├── src/
    │   └── impl.cpp
    └── CMakeLists.txt

2. 编写 CMakeLists.txt

add_library(apollo_mymodule STATIC
    include/apollo/mymodule/api.hpp
    src/impl.cpp
)

target_include_directories(apollo_mymodule
    PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>
)

target_link_libraries(apollo_mymodule
    PUBLIC apollo::base
    PRIVATE apollo::core
)

add_library(apollo::mymodule ALIAS apollo_mymodule)

下一步

了解 配置系统。

在 GitHub 上编辑此页
最后更新: 3/20/26, 6:06 AM
贡献者: cuihairu
Prev
核心概念
Next
配置