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