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