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.

91 lines
2.8 KiB

cmake_minimum_required(VERSION 3.0)
# Définir la politique CMP0048 pour gérer les variables de version dans project()
cmake_policy(SET CMP0048 NEW)
project(CMAKE C)
# Définir le standard C
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
# Ajout de l'option -O3 pour un niveau plus élevé d'optimisation
set(CMAKE_C_FLAGS_RELEASE "-O3")
# Ajouter les fichiers source de votre projet
file(GLOB_RECURSE SOURCES "src/*.c")
# 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(CMAKE ${SOURCES}
)
# Options de compilation pour le debug
set(CMAKE_C_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..."
)
# Ajouter une instruction pour afficher le répertoire de construction
message("Répertoire de construction : ${CMAKE_BINARY_DIR}")
# 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:CMAKE>
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:CMAKE>
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)