Migrate to CMake-based build with packaging
Major build system refactoring: **CMake (build authority)**: - Auto-discovers .cpp files (GLOB_RECURSE in source/core/ and source/game/) - No manual file list maintenance needed - Excludes source/legacy/ automatically - Generates build/project.h from template **Makefile (simplified wrapper)**: - Delegates compilation to CMake (make → cmake --build build) - Contains 5 release packaging targets: * macos_release: .app bundle + .dmg (Apple Silicon) * linux_release: .tar.gz * windows_release: .zip with .exe + DLLs * windows_cross: cross-compile from Linux/macOS * rpi_release: ARM64 cross-compile - Complex packaging logic preserved (code signing, symlinks, DMG creation) **Benefits**: - Add new .cpp file → automatically compiled (no manual updates) - Single source of truth in CMakeLists.txt (no duplication) - IDE-friendly (VSCode, CLion, etc.) - Complete packaging support (5 platforms) **Files changed**: - CMakeLists.txt: GLOB_RECURSE replaces 23-file hardcoded list - Makefile: Simplified compilation + added 5 release targets (~220 lines) - CLAUDE.md: Updated build system documentation - escena_titol.cpp: Fixed include path (build/project.h → project.h) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -31,33 +31,23 @@ endif()
|
||||
# Configurar archivo de versión
|
||||
configure_file(${CMAKE_SOURCE_DIR}/source/project.h.in ${CMAKE_BINARY_DIR}/project.h @ONLY)
|
||||
|
||||
# --- LISTA DE FUENTES ---
|
||||
# --- LISTA DE FUENTES (AUTO-DESCUBRIMIENTO) ---
|
||||
# Buscar automáticamente todos los archivos .cpp en core/, game/ y main.cpp
|
||||
file(GLOB_RECURSE CORE_SOURCES "${CMAKE_SOURCE_DIR}/source/core/*.cpp")
|
||||
file(GLOB_RECURSE GAME_SOURCES "${CMAKE_SOURCE_DIR}/source/game/*.cpp")
|
||||
set(APP_SOURCES
|
||||
${CORE_SOURCES}
|
||||
${GAME_SOURCES}
|
||||
source/main.cpp
|
||||
source/core/system/director.cpp
|
||||
source/core/system/global_events.cpp
|
||||
source/core/rendering/sdl_manager.cpp
|
||||
source/core/rendering/line_renderer.cpp
|
||||
source/core/rendering/color_oscillator.cpp
|
||||
source/core/rendering/polygon_renderer.cpp
|
||||
source/core/rendering/primitives.cpp
|
||||
source/core/rendering/shape_renderer.cpp
|
||||
source/core/graphics/shape.cpp
|
||||
source/core/graphics/shape_loader.cpp
|
||||
source/core/graphics/vector_text.cpp
|
||||
source/core/graphics/starfield.cpp
|
||||
source/core/audio/audio.cpp
|
||||
source/core/audio/audio_cache.cpp
|
||||
source/game/options.cpp
|
||||
source/game/escenes/escena_logo.cpp
|
||||
source/game/escenes/escena_titol.cpp
|
||||
source/game/escenes/escena_joc.cpp
|
||||
source/game/entities/nau.cpp
|
||||
source/game/entities/bala.cpp
|
||||
source/game/entities/enemic.cpp
|
||||
source/game/effects/debris_manager.cpp
|
||||
)
|
||||
|
||||
# Excluir archivos legacy (código Pascal de referencia)
|
||||
list(FILTER APP_SOURCES EXCLUDE REGEX ".*/legacy/.*")
|
||||
|
||||
# Log de archivos encontrados (útil para debug)
|
||||
list(LENGTH APP_SOURCES APP_SOURCES_COUNT)
|
||||
message(STATUS "Archivos .cpp encontrados: ${APP_SOURCES_COUNT}")
|
||||
|
||||
# Configuración de SDL3
|
||||
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
|
||||
message(STATUS "SDL3 encontrado: ${SDL3_INCLUDE_DIRS}")
|
||||
|
||||
Reference in New Issue
Block a user