You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.8 KiB

cmake_minimum_required(VERSION 3.0)
project(TP6_Bordel)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Ajout de l'option -03 pour un niveau plus élevé d'optimisation
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
# Ajouter les fichiers source de votre projet
file(GLOB_RECURSE SOURCES "src/*.cpp")
# Afficher un message au début de la compilation
message("Début de la compilation")
# Créer une cible pour l'exécutable
add_executable(TP6_Bordel ${SOURCES} src/main.cpp src/Dame.h src/Dame.cpp src/Brigand.h src/Brigand.cpp src/Cowboy.h src/Cowboy.cpp src/Sheriff.cpp src/Barman.h src/Barman.cpp)
# Options de compilation pour le debug
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")
# Tâche de compilation
add_custom_target(build
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Compilation en cours..."
)
# Tâche de nettoyage
add_custom_target(clean_all
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/
COMMENT "Nettoyage en cours..."
)
# Tâche de débogage
add_custom_target(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMENT "Configuration de la compilation en mode debug..."
)
# Afficher un message au début du debug
message("Début du debug")
# Tâche pour exécuter l'exécutable généré
add_custom_target(run
COMMAND $<TARGET_FILE:TP6_Bordel>
COMMENT "Exécution de l'exécutable..."
)
# Tâche pour exécuter l'exécutable généré avec valgrind
add_custom_target(run_valgrind
COMMAND valgrind --leak-check=full $<TARGET_FILE:TP6_Bordel>
COMMENT "Exécution de l'exécutable avec valgrind..."
)
# Tâche pour exécuter l'exécutable généré avec gdb
option(BUILD_DOC "Build documentation" ON)
# Indique que la construction de la documentation est une option et l'active par défaut
option(BUILD_DOC "Build documentation" ON)
# On vérifie que Doxygen est installé
find_package(Doxygen)
if (DOXYGEN_FOUND)
# Défini les fichiers d'entrée et de sortie
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# Demande de configuration du fichier
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
message("Doxygen build started")
# Option ALL qui permet de construire les documents en même temps que l'application
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
else (DOXYGEN_FOUND)
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)