V2.0.0
This commit is contained in:
1 parent
7f7fcd545d
commit
4d9a339421
114 files changed
+11383
-1837
No files matched your search
+24
-88
@@ -1,98 +1,34 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Tahgibu VERSION 2.0.0 LANGUAGES C CXX)
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
project(Tahgibu VERSION 2.0.0 DESCRIPTION "Editor de animación 2D" LANGUAGES C)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Tipo de compilación" FORCE)
|
||||
endif()
|
||||
|
||||
option(TAHGIBU_BUILD_APP "Compilar el editor (requiere raylib)" ON)
|
||||
option(TAHGIBU_BUILD_TESTS "Compilar las pruebas del núcleo" ON)
|
||||
option(TAHGIBU_FETCH_RAYLIB "Descargar y compilar raylib si no se encuentra (requiere red y git)" OFF)
|
||||
option(TAHGIBU_BUILD_APP "Construir la aplicación gráfica (necesita raylib)" ON)
|
||||
option(TAHGIBU_BUILD_TESTS "Construir las pruebas" ON)
|
||||
option(TAHGIBU_BUILD_EXAMPLES "Construir la extensión nativa de ejemplo" ON)
|
||||
option(TAHGIBU_WITH_LUA "Incluir soporte de extensiones Lua (necesita Lua 5.4)" OFF)
|
||||
option(TAHGIBU_FETCH_DEPS "Descargar raylib si no está instalada (necesita Internet)" OFF)
|
||||
option(TAHGIBU_SANITIZE "Compilar con AddressSanitizer y UBSan (solo gcc/clang)" OFF)
|
||||
option(TAHGIBU_WARNINGS_AS_ERRORS "Tratar los avisos como errores" OFF)
|
||||
option(TAHGIBU_UI_SMOKE "Prueba de la interfaz con un raylib falso (desarrollo)" OFF)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Núcleo: modelo de datos del proyecto. NO depende de raylib.
|
||||
# ---------------------------------------------------------------------------
|
||||
add_library(tahgibu_core STATIC
|
||||
source/core/Frame.cpp
|
||||
source/core/Project.cpp
|
||||
)
|
||||
target_include_directories(tahgibu_core PUBLIC source)
|
||||
target_compile_definitions(tahgibu_core PUBLIC TAHGIBU_VERSION="${PROJECT_VERSION}")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
target_compile_options(tahgibu_core PUBLIC -Wall -Wextra)
|
||||
endif()
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||
include(CompilerOptions)
|
||||
include(PlatformConfig)
|
||||
include(Dependencies)
|
||||
include(BuildTargets)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Lua: solo se detecta. No se enlaza hasta la etapa 10.
|
||||
# ---------------------------------------------------------------------------
|
||||
find_package(Lua QUIET)
|
||||
if(LUA_FOUND)
|
||||
message(STATUS "Lua ${LUA_VERSION_STRING} encontrado (se usará a partir de la etapa 10)")
|
||||
else()
|
||||
message(STATUS "Lua no encontrado. No hace falta todavía; será necesario en la etapa 10.")
|
||||
endif()
|
||||
message(STATUS "Tahgibu ${PROJECT_VERSION}: app=${TAHGIBU_BUILD_APP} tests=${TAHGIBU_BUILD_TESTS} lua=${TAHGIBU_WITH_LUA}")
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Editor (raylib)
|
||||
# ---------------------------------------------------------------------------
|
||||
if(TAHGIBU_BUILD_APP)
|
||||
set(TAHGIBU_RAYLIB_TARGET "")
|
||||
|
||||
find_package(raylib QUIET)
|
||||
if(TARGET raylib)
|
||||
set(TAHGIBU_RAYLIB_TARGET raylib)
|
||||
else()
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(RAYLIB QUIET IMPORTED_TARGET raylib)
|
||||
if(RAYLIB_FOUND)
|
||||
set(TAHGIBU_RAYLIB_TARGET PkgConfig::RAYLIB)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT TAHGIBU_RAYLIB_TARGET AND TAHGIBU_FETCH_RAYLIB)
|
||||
include(FetchContent)
|
||||
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
FetchContent_Declare(raylib
|
||||
GIT_REPOSITORY https://github.com/raysan5/raylib.git
|
||||
GIT_TAG 5.0
|
||||
GIT_SHALLOW ON)
|
||||
FetchContent_MakeAvailable(raylib)
|
||||
set(TAHGIBU_RAYLIB_TARGET raylib)
|
||||
endif()
|
||||
|
||||
if(NOT TAHGIBU_RAYLIB_TARGET)
|
||||
message(FATAL_ERROR
|
||||
"No se encontró raylib.\n"
|
||||
"Opciones:\n"
|
||||
" 1) Instalarla con el gestor de paquetes de tu distribución (ver README.md).\n"
|
||||
" 2) Reconfigurar con -DTAHGIBU_FETCH_RAYLIB=ON (descarga y compila raylib).\n"
|
||||
" 3) Compilar solo el núcleo y las pruebas con -DTAHGIBU_BUILD_APP=OFF.")
|
||||
endif()
|
||||
message(STATUS "raylib: ${TAHGIBU_RAYLIB_TARGET}")
|
||||
|
||||
add_executable(tahgibu
|
||||
source/main.cpp
|
||||
source/ui/Application.cpp
|
||||
source/ui/Layout.cpp
|
||||
)
|
||||
target_link_libraries(tahgibu PRIVATE tahgibu_core ${TAHGIBU_RAYLIB_TARGET})
|
||||
endif()
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Pruebas del núcleo (no necesitan raylib ni pantalla)
|
||||
# ---------------------------------------------------------------------------
|
||||
if(TAHGIBU_BUILD_TESTS)
|
||||
enable_testing()
|
||||
add_executable(tahgibu_core_tests tests/core_tests.cpp)
|
||||
target_link_libraries(tahgibu_core_tests PRIVATE tahgibu_core)
|
||||
add_test(NAME core COMMAND tahgibu_core_tests)
|
||||
endif()
|
||||
# Paquetes (cpack): tar.gz y zip del ejecutable instalado. Sin probar todavía: ver docs/STATUS.md.
|
||||
set(CPACK_PACKAGE_NAME "Tahgibu")
|
||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
set(CPACK_PACKAGE_VENDOR "Autores de Tahgibu")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
|
||||
set(CPACK_GENERATOR "TGZ;ZIP")
|
||||
include(CPack)
|
||||
Reference in new issue
Block a user