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
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) |