Files
Ange-Marie MAURIN - A2M Systèmes da0d31385b build: arborescence bin/<plateforme>/<type> et build unifié (ADR 0010)
- platform/layout : racine sequa-root.json, chemins des composants, arguments et chemins en UTF-8.
- Règles install() : bin/windows-x64/{debug,release,asan}/ (core, render, studio + ui, engines).
- Le Core trouve sequa-render et les adaptateurs depuis la racine (--sequa-root, passé par
  Studio host à sa copie fantôme) : plus de render-unavailable depuis le panneau Rendu.
- L'adaptateur Godot cherche Godot et son projet à côté de lui (surcharge par --adapter-options) ;
  template_release pour le type release. Godot hébergé dans les presets debug et release.
- scripts/build-all.ps1 : Godot, C++, interface, arrêt des processus du dossier visé, install ;
  check.ps1 l'appelle (modification de l'ADR 0004).
- docs/installation/ : compiler, lancer, installer et désinstaller par plateforme.
2026-11-07 15:50:37 +01:00

54 lines
2.3 KiB
CMake

# SPDX-License-Identifier: MPL-2.0
cmake_minimum_required(VERSION 3.25)
project(SEQUA
VERSION 0.0.1
DESCRIPTION "SEQUA Engine - Simulate Environments, Quantify Uncertainty, Adapt"
LANGUAGES CXX)
if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
message(FATAL_ERROR "Build dans le dossier source interdit : utiliser un preset (cmake --preset <nom>).")
endif()
option(SEQUA_BUILD_TESTS "Construire les tests" ON)
option(SEQUA_BUILD_SERVER "Construire le serveur WebSocket du Core (protocole Studio - Core)" ON)
option(SEQUA_WARNINGS_AS_ERRORS "Avertissements traités comme erreurs" ON)
option(SEQUA_CLANG_TIDY "Lancer clang-tidy pendant la compilation" OFF)
set(SEQUA_SANITIZERS "" CACHE STRING "Sanitizers à activer (liste : address;undefined)")
option(SEQUA_BUILD_PROTOTYPES "Construire les prototypes jetables (prototypes/)" OFF)
option(SEQUA_BUILD_GODOT_RUNTIME "Héberger Godot dans l'adaptateur (godot-cpp ; Godot construit par scripts/build-godot.ps1)" OFF)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Les bibliothèques statiques sont aussi liées dans des bibliothèques d'adaptateur chargées (ADR 0009).
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(SequaCompilerOptions)
include(SequaDependencies)
include(SequaInstall) # bin/<plateforme>/<type>/ (ADR 0010)
if(SEQUA_BUILD_TESTS)
enable_testing()
endif()
add_subdirectory(platform/process) # lancement de processus enfants (Studio host, Core)
add_subdirectory(platform/layout) # arborescence des binaires, racine sequa-root.json (ADR 0010)
add_subdirectory(core)
add_subdirectory(3d)
add_subdirectory(engines/godot/adapter) # Godot lui-même n'est pas compilé ici (SCons, scripts/build-godot.ps1)
add_subdirectory(engines/debug/adapter)
if(SEQUA_BUILD_SERVER)
add_subdirectory(render) # sequa-render (IXWebSocket, nlohmann/json)
add_subdirectory(studio/host) # dépend d'IXWebSocket et nlohmann/json
endif()
# Interface construite par npm run build (studio/ui/dist), absente tant qu'elle n'est pas construite.
install(DIRECTORY "${PROJECT_SOURCE_DIR}/studio/ui/dist/" DESTINATION studio/ui OPTIONAL)
if(SEQUA_BUILD_PROTOTYPES AND EXISTS "${PROJECT_SOURCE_DIR}/prototypes/CMakeLists.txt")
add_subdirectory(prototypes)
endif()