-
-
Notifications
You must be signed in to change notification settings - Fork 9
Build System
yurii.levchenko edited this page Mar 17, 2026
·
1 revision
Mengine использует CMake в качестве системы сборки с поддержкой множества платформ и конфигураций.
cmake/
├── base_template.cmake ← Базовая конфигурация и детекция архитектуры
├── build_options_template.cmake ← Опции сборки (ASAN, PCH)
├── master_options_template.cmake ← Профиль Master Release
├── dev_options_template.cmake ← Профиль Development
├── mengine_template.cmake ← Шаблон сборки движка
├── macro_template.cmake ← Макросы сборки
├── dependencies_template.cmake ← Шаблон зависимостей
├── download_template.cmake ← Скачивание зависимостей
├── Dependencies/ ← CMake для сторонних библиотек
│ └── CMakeLists.txt
├── Win32/ ← Windows 32-bit
├── Win64/ ← Windows 64-bit
├── Win32_DX11/ Win64_DX11/ ← DirectX 11
├── Win32_SDL2/ Win32_SDL3/ ← SDL бекенды
├── Win32_ASAN_ADDRESS/ ← ASAN
├── Android/ ← Android NDK
├── Xcode_iOS/ ← iOS
├── Xcode_iOS_Simulator/ ← iOS Simulator
├── Xcode_iOS_AppClip/ ← iOS App Clip
├── Xcode_MacOS/ ← macOS
├── GDK/ ← Xbox GDK
├── UWP/ ← Universal Windows Platform
├── Unix/ ← Linux/POSIX
├── MinGW/ MinGW64/ ← MinGW (GCC для Windows)
├── Emscripten/ ← WebAssembly
└── Tools_Win32/ Tools_Win64/ ← Инструменты
| Опция | По умолчанию | Описание |
|---|---|---|
MENGINE_USE_ADDRESS_SANITIZE |
OFF | Address Sanitizer для отладки памяти |
MENGINE_USE_PRECOMPILED_HEADER |
OFF | Прекомпилированные заголовки |
| Опция | По умолчанию | Описание |
|---|---|---|
MENGINE_BUILD_MENGINE_MASTER_RELEASE |
ON | Режим мастер-релиза |
MENGINE_BUILD_MENGINE_BUILD_PUBLISH |
OFF | Публикация билда |
MENGINE_BUILD_MENGINE_DEVELOPMENT |
OFF | Режим разработки |
MENGINE_BUILD_MENGINE_SCRIPT_EMBEDDED |
ON | Встроенные скрипты |
MENGINE_EXTERNAL_PDB |
OFF | Внешние PDB файлы |
MENGINE_USE_SUBFOLDER |
OFF | Использование подпапок |
| Строковая опция | По умолчанию | Описание |
|---|---|---|
MENGINE_SUBFOLDER_NAME |
"Mengine" | Имя подпапки |
MENGINE_INSTALL_PATH |
"" | Путь установки |
MENGINE_SECURE_VALUE |
"0123456789A" | Значение безопасности |
MENGINE_EXTERNAL_PDB_PATH |
"" | Путь к внешним PDB |
MENGINE_EXTERNAL_SOURCE_PATH |
"" | Внешние пути к исходникам |
MENGINE_EXTERNAL_TEMP_PATH |
"" | Временные пути |
Аналогичен Master, но MENGINE_BUILD_MENGINE_MASTER_RELEASE = OFF.
base_template.cmake автоматически определяет:
-
Архитектура:
MENGINE_ARCHITECTURE_X86,X64,ARM,AARCH64 -
Платформа:
MENGINE_TARGET_WINDOWS,ANDROID,IOS,MACOS,UNIX,EMSCRIPTEN,UWP -
Рендер:
MENGINE_RENDER_DIRECTX9,DIRECTX11,OPENGL -
Тулчейн:
MENGINE_TOOLCHAIN_MSVC,MINGW,XCODE,GCC,GRADLE,EMSCRIPTEN
Mengine\build\downloads\downloads.bat:: Формат: build_depends_{platform}_{config}.bat
Mengine\build\msvc17\build_depends_msvc17_debug.batCMake конфигурирует и собирает все зависимости из cmake/Dependencies/CMakeLists.txt.
:: Формат: make_solution_{platform}_{config}.bat
Mengine\build\msvc17\make_solution_msvc17_debug.bat:: Формат: build_solution_{platform}_{config}.bat
Mengine\build\msvc17\build_solution_msvc17_debug.batbuild/
├── downloads/ ← Скрипты скачивания зависимостей
├── build_depends.bat ← Общий скрипт сборки зависимостей
├── build_solution.bat ← Общий скрипт сборки решения
├── cmake_configure.bat ← Конфигурация CMake
├── make_depends.bat ← Генерация проекта зависимостей
├── make_solution.bat ← Генерация решения
├── process_depends.bat ← Постобработка зависимостей
├── process_solution.bat ← Постобработка решения
├── vcvarsall_msvc15.bat ← Окружение VS 2017
├── vcvarsall_msvc16.bat ← Окружение VS 2019
├── vcvarsall_msvc17.bat ← Окружение VS 2022
└── vcvarsall_msvc18.bat ← Окружение VS (будущая версия)
| Тип | CMake | Описание |
|---|---|---|
| Debug | CMAKE_BUILD_TYPE=Debug |
Полная отладочная информация, assertions |
| Release | CMAKE_BUILD_TYPE=Release |
Максимальная оптимизация |
| RelWithDebInfo | CMAKE_BUILD_TYPE=RelWithDebInfo |
Release с отладочными символами |
| Конфигурация | Описание |
|---|---|
msvc17 |
Visual Studio 2022, Win32, DirectX 9 |
msvc17_x64 |
Visual Studio 2022, x64 |
msvc17_dx11 |
Visual Studio 2022, DirectX 11 |
msvc17_dx11_x64 |
Visual Studio 2022, x64, DirectX 11 |
msvc17_sdl2 |
Visual Studio 2022, SDL2 |
msvc17_sdl3 |
Visual Studio 2022, SDL3 |
msvc17_gdk |
Visual Studio 2022, Xbox GDK |
msvc17_uwp |
Visual Studio 2022, UWP |
msvc17_asan_address |
Visual Studio 2022, Address Sanitizer |
gradle/
├── build.gradle ← Корневая конфигурация
├── settings.gradle.kts ← Настройки проекта (Kotlin DSL)
├── gradle.properties ← Свойства сборки
├── gradlew / gradlew.bat ← Gradle Wrapper
├── app/ ← Основной модуль приложения
├── libraries/ ← Библиотеки
├── base.gradle ← Базовая конфигурация
├── androidx.gradle ← Зависимости AndroidX
├── gms.gradle ← Google Mobile Services
├── delivery.gradle ← Конфигурация релиза
├── minify.gradle ← Минификация (ProGuard/R8)
└── plugins/ ← Пользовательские Gradle-плагины
Параметры Android NDK:
- NDK: 29.0.14206865
- CMake: 3.31.6
- API Level: 23+
- ABI: x86, x86_64, armeabi-v7a, arm64-v8a
- STL: c++_shared
- Компилятор: Clang (NDK)
- NEON: включен
Mengine/
├── bin/ ← Бинарные файлы
│ ├── Mengine_WIN32/
│ ├── Mengine_WIN64_DX11/
│ ├── Mengine_GDK/
│ ├── Tools_WIN32/
│ └── ...
├── outputs/ ← Промежуточные файлы
└── solutions/ ← Сгенерированные проекты
├── solution_msvc17_debug/
├── solution_msvc17_release/
└── ...
- Getting Started — инструкции по сборке
- Platforms — поддерживаемые платформы
- Dependencies — сторонние библиотеки