Test font pas fini

This commit is contained in:
Tom Ray
2026-06-21 21:53:01 +02:00
parent 9f4740e20f
commit ab43ad1604
54 changed files with 2040 additions and 573 deletions
+70 -281
View File
@@ -1,8 +1,7 @@
# Nous voulons un cmake "récent" pour utiliser les dernières fonctionnalités.
cmake_minimum_required(VERSION 3.20)
set (CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
# Nom du projet.
set(PROJECT CosmicEngine)
project(${PROJECT})
@@ -42,15 +41,6 @@ endif()
# ---------- Inclusion des packages sous linux -----------
if(UNIX)
# --------- Inclusion d'OpenGL ----------
# OpenGL Lib pour charger OpenGL, fournit avec les drivers, donc se trouve toute seul.
# find_package(OpenGL REQUIRED)
# if(OPENGL_FOUND)
# message("lib OpenGL Trouvé")
# else()
# message("lib OpenGL Introuvable")
# endif()
# ---------------------------------------
# ---------- Inclusion de GLM -----------
# GLM Lib pour mathématique, en mode header only.
@@ -86,129 +76,6 @@ if(UNIX)
message("lib EnTTlib Introuvable")
endif()
# --------- Inclusion de Boost ----------
# Boost Lib pour diverse simplification
# set(Boost_USE_STATIC_LIBS OFF)
# set(Boost_USE_MULTITHREADED ON)
# set(Boost_USE_STATIC_RUNTIME OFF)
# find_package(Boost REQUIRED COMPONENTS log_setup log filesystem chrono thread date_time regex) # header only libraries must not be added here
# message(STATUS "Boost version: ${Boost_VERSION}")
# if(NOT TARGET Boost::filesystem)
# add_library(Boost::filesystem IMPORTED INTERFACE)
# set_property(TARGET Boost::filesystem PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::filesystem PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::thread)
# add_library(Boost::thread IMPORTED INTERFACE)
# set_property(TARGET Boost::thread PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::thread PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::chrono)
# add_library(Boost::chrono IMPORTED INTERFACE)
# set_property(TARGET Boost::chrono PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::chrono PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::date_time)
# add_library(Boost::date_time IMPORTED INTERFACE)
# set_property(TARGET Boost::date_time PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::date_time PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::regex)
# add_library(Boost::regex IMPORTED INTERFACE)
# set_property(TARGET Boost::regex PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::regex PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::log)
# add_library(Boost::log IMPORTED INTERFACE)
# set_property(TARGET Boost::log PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::log PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(NOT TARGET Boost::log_setup)
# add_library(Boost::log_setup IMPORTED INTERFACE)
# set_property(TARGET Boost::log_setup PROPERTY
# INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
# set_property(TARGET Boost::log_setup PROPERTY
# INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES})
# endif()
# if(Boost_FOUND)
# message("lib Boost Trouvé")
# else()
# message("lib Boost Introuvable")
# endif()
# ---------------------------------------
# -------- Inclusion de la SDL2 ----------
# SDL2 Lib pour fenetre et contrôle
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(SDL2 REQUIRED)
# if(SDL2_FOUND)
# message("lib SDL2 Trouvé")
# else()
# message("lib SDL2 Introuvable")
# endif()
# ---------------------------------------
# ------- Inclusion de SDL2_IMAGE --------
# SDL2_IMAGE Lib pour charger une image
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(SDL2_image QUIET)
# #find_library(SDL2_image libSDL2_image)
# if(SDL2_image_FOUND)
# message("lib SDL2_IMAGE Trouvé")
# else()
# message("lib SDL2_IMAGE Introuvable")
# endif()
# ---------------------------------------
# ------- Inclusion de SDL2_TTF --------
# SDL2_IMAGE Lib pour charger une police d'écriture.
# set(SDL2_ttf_DIR ./lib/CMake/Linux)
# # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(SDL2_ttf QUIET)
# #find_library(SDL2_ttf libSDL2_ttf)
# if(SDL2_ttf_FOUND)
# message("lib SDL2_TTF Trouvé")
# else()
# message("lib SDL2_TTF Introuvable")
# endif()
# ---------------------------------------
# --------- Inclusion de GLEW -----------
# GLEW Lib pour charger utiliser OpenGL + extension
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(GLEW REQUIRED)
# if(GLEW_FOUND)
# message("lib GLEW Trouvé")
# else()
# message("lib GLEW Introuvable")
# endif()
# ---------------------------------------
# ---------- Inclusion de ASSIMP -----------
# Assimp Lib import modèles 3D.
find_package(assimp REQUIRED)
@@ -219,31 +86,6 @@ if(UNIX)
endif()
# ---------------------------------------
# ---------- Inclusion de ODE -----------
# ODE Lib Moteur physique.
# set(ODE_DIR ./lib/CMake/Linux)
# # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(ODE REQUIRED)
# if(ODE_FOUND)
# message("lib ODE Trouvé")
# else()
# message("lib ODE Introuvable")
# endif()
# ---------------------------------------
# --------- Inclusion de SNDFILE ----------
# SNDFILE Lib pour inclure le son.
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
#set(SNDFILE_DIR ./lib/CMake/Linux)
# find_package(sndfile QUIET)#TODO corrige
# #find_library(sndfile libsndfile)
# if(sndfile_FOUND)
# message("lib SNDFILE Trouvé")
# else()
# message("lib SNDFILE Introuvable")
# endif()
# ---------------------------------------
# ---------- Inclusion de OpenAL-----------
# OpenAL Lib gérer le son.
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
@@ -329,22 +171,6 @@ endif()
endif()
# ---------------------------------------
# ------- Inclusion de Spirv-cross --------
#Spirv-cross pour metadonnees shader spirv
# set(spirv_cross_core_DIR ./lib/CMake/Linux/spirv-crossConf)
# set(spirv_cross_glsl_DIR ./lib/CMake/Linux/spirv-crossConf)
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# find_package(spirv_cross_core QUIET)
# find_package(spirv_cross_glsl QUIET)
#find_library(SDL2_ttf libSDL2_ttf)
# if(spirv_cross_core_FOUND AND spirv_cross_glsl_FOUND)
# message("lib spirv_cross Trouvé")
# else()
# message("lib spirv_cross Introuvable")
# endif()
# ---------------------------------------
# ------- Inclusion de Spirv-cross --------
#Spirv-cross pour metadonnees shader spirv
set(spirvreflectlib_DIR ./lib/CMake/Linux/)
@@ -401,6 +227,20 @@ else()
endif()
# ---------------------------------------
# ------- Inclusion de MSDFATLASGEN --------
# Pour les font
set(MsdfAtlasGen_DIR ./lib/CMake/Linux)
find_package(MsdfAtlasGen REQUIRED)
if(MsdfAtlasGen_FOUND)
message("lib MsdfAtlasGen Trouvé")
else()
message("lib MsdfAtlasGen Introuvable")
endif()
# ---------------------------------------
endif()
@@ -447,6 +287,22 @@ target_include_directories(Engine
${CMAKE_CURRENT_SOURCE_DIR}/src/Engine
)
add_library(EngineHeaders INTERFACE)
target_include_directories(EngineHeaders INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/src/Engine
${GLM_INCLUDE_DIRS}
${JSONFMCPP_INCLUDE_DIRS}
${ENTT_INCLUDE_DIRS}
${JOLT_INCLUDE_DIRS}
${VMA_INCLUDE_DIRS}
${DRLIBS_INCLUDE_DIRS}
${MSDFATLASGEN_INCLUDE_DIRS}
${OPENAL_INCLUDE_DIR}
${SPIRV_REFLECT_INCLUDE_DIRS}
${ASSIMP_INCLUDE_DIRS}
${JSONVALIDATOR_INCLUDE_DIRS}
)
add_library(ScriptModule SHARED ${SRCS_SCRIPTS})
target_include_directories(ScriptModule PRIVATE ${HEADERS_ENGINE})
@@ -471,135 +327,68 @@ if(GENERATED_SPV_FILES)
)
endif()
add_dependencies(${PROJECT} Engine)
add_dependencies(${PROJECT} EngineHeaders)
add_dependencies(Engine CompileSlangShaders)
add_dependencies(ScriptModule Engine)
add_dependencies(ScriptModule EngineHeaders)
target_link_libraries(CosmicTest PRIVATE Catch2::Catch2WithMain Engine)
# Fichier include
# OpenGL
#include_directories(${OPENGL_INCLUDE_DIR})
# SDL2
#include_directories(${SDL2_INCLUDE_DIRS})
# GLEW
#include_directories(${GLEW_INCLUDE_DIRS})
# SDL2_image
#include_directories(${SDL2_IMAGE_INCLUDE_DIRS})
# SDL2_ttf
#include_directories(${SDL2_TTF_INCLUDE_DIRS})
# GLM
include_directories(${GLM_INCLUDE_DIRS})
# JSONFMCPP
include_directories(${JSONFMCPP_INCLUDE_DIRS})
#ENTT
include_directories(${ENTT_INCLUDE_DIRS})
#include_directories(${SPIRV_INCLUDE_DIRS})
include_directories(${SPIRV_REFLECT_INCLUDE_DIRS})
include_directories(${VMA_INCLUDE_DIRS})
# ASSIMP
include_directories(${ASSIMP_INCLUDE_DIRS})
# ODE
#include_directories(${ODE_INCLUDE_DIRS})
include_directories(${JOLT_INCLUDE_DIRS})
# SNDFILE
#include_directories(${SNDFILE_INCLUDE_DIRS})
# OPENAL
include_directories(${OPENAL_INCLUDE_DIRS})
include_directories(${OPENAL_INCLUDE_DIR})
include_directories(${JSONVALIDATOR_INCLUDE_DIRS})
include_directories(${DRLIBS_INCLUDE_DIRS})
target_link_libraries(Engine ${JSONVALIDATOR_LIBRARIES})
include_directories(${MSDFATLASGEN_INCLUDE_DIRS})
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(Engine PRIVATE
JPH_ENABLE_ASSERTS
JPH_PROFILE_ENABLED
JPH_OBJECT_STREAM
JPH_DEBUG_RENDERER
)
target_compile_definitions(Engine PRIVATE
JPH_ENABLE_ASSERTS
JPH_PROFILE_ENABLED
JPH_OBJECT_STREAM
JPH_DEBUG_RENDERER
)
target_compile_definitions(ScriptModule PRIVATE
JPH_ENABLE_ASSERTS
JPH_PROFILE_ENABLED
JPH_OBJECT_STREAM
JPH_DEBUG_RENDERER
)
#target_compile_definitions(ScriptModule PRIVATE
# JPH_ENABLE_ASSERTS
# JPH_PROFILE_ENABLED
# JPH_OBJECT_STREAM
# JPH_DEBUG_RENDERER
#)
else() # Release
target_compile_definitions(Engine PRIVATE
JPH_OBJECT_STREAM
)
target_compile_definitions(ScriptModule PRIVATE
JPH_OBJECT_STREAM
)
target_compile_definitions(Engine PRIVATE
JPH_OBJECT_STREAM
)
#target_compile_definitions(ScriptModule PRIVATE
# JPH_OBJECT_STREAM
#)
endif()
target_link_libraries(Engine
target_link_libraries(Engine PRIVATE
debug ${JOLT_LIBRARIES_DEBUG}
optimized ${JOLT_LIBRARIES_RELEASE}
SDL3::SDL3
SDL3_image
SDL3_ttf
Vulkan::Vulkan
spirv-reflect
${ASSIMP_LIBRARIES}
OpenAL::OpenAL
${JSONVALIDATOR_LIBRARIES}
${MSDFATLASGEN}
)
# Fichier lib
# OpenGL
#target_link_libraries(Engine OpenMP::OpenMP_CXX)
# OpenMP
#target_link_libraries(Engine ${OPENGL_LIBRARIES})
# SDL2
#target_link_libraries(Engine ${SDL2_LIBRARIES})
target_link_libraries(Engine SDL3::SDL3)
# GLEW
#target_link_libraries(Engine ${GLEW_LIBRARIES})
# SDL2_image
#target_link_libraries(Engine SDL2_image)
target_link_libraries(Engine SDL3_image)
# SDL2_ttf
#target_link_libraries(Engine SDL2_ttf)
target_link_libraries(Engine SDL3_ttf)
# Boost
#Vulkan
target_link_libraries(Engine Vulkan::Vulkan)
target_link_libraries(Engine spirv-reflect)
#target_link_libraries(Engine spirv-cross-glsl spirv-cross-core)
# ASSIMP
target_link_libraries(Engine ${ASSIMP_LIBRARIES})
# ODE
#target_link_libraries(Engine ${ODE_LIBRARIES})
# SNDFILE
#target_link_libraries(Engine sndfile)
# OPENAL
target_link_libraries(Engine OpenAL::OpenAL)
#target_link_libraries(Engine ${CMAKE_DL_LIBS})
#target_link_libraries(${PROJECT} ${CMAKE_DL_LIBS})
# Boost
# target_link_libraries(Engine Boost::boost)
# target_link_libraries(Engine Boost::filesystem)
# target_link_libraries(Engine Boost::chrono)
# target_link_libraries(Engine Boost::thread)
# target_link_libraries(Engine Boost::date_time)
# target_link_libraries(Engine Boost::regex)
# target_link_libraries(Engine Boost::log)
# target_link_libraries(Engine Boost::log_setup)
target_link_libraries(ScriptModule Engine)
target_link_libraries(${PROJECT} Engine)
target_link_libraries(CosmicTest PRIVATE Catch2::Catch2WithMain Engine EngineHeaders)
target_link_libraries(ScriptModule PRIVATE EngineHeaders)
target_link_options(ScriptModule PRIVATE -Wl,--allow-shlib-undefined)
target_link_libraries(${PROJECT} PUBLIC Engine EngineHeaders)
target_link_options(${PROJECT} PRIVATE
-Wl,--export-dynamic
)
if(UNIX)
add_custom_command(