13.2 Le fichier CMakeLists.txt

Dans le dossier GenerationDocumentation nous allons écrire le fichier CMakeLists.txt.

Voici a quoi il ressemble :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
project(ExempleGenerationDoc)
cmake_minimum_required(VERSION 2.6)

set(PROGRAM_NAME "ExempleGenerationDoc")
set(PROGRAM_VERSION "0.9.10")
set(PROGRAM_DESCRIPTION "Exemple de génération de doc avec CMake et Doxygen")


#le mode d'installation
set(RELEASE_MODE no CACHE BOOL "Install mode")
#le mode de documentation
set(DOC_MODE no CACHE BOOL "Doc mode")

#si on veut installer le programme, on le compile en mode optimisé
#on affiche la variable ${RELEASE_MODE} pour savoir où on en est
message(STATUS "RELEASE_MODE : ${RELEASE_MODE}")
if(RELEASE_MODE)
	add_definitions(-O3 -DNDEBUG -DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" -DPROGRAM_VERSION="${PROGRAM_VERSION}")
	message(STATUS "CMAKE_INSTALL_PREFIX : ${CMAKE_INSTALL_PREFIX}")
	message(STATUS "PROGRAM_VERSION : ${PROGRAM_VERSION}")
else(RELEASE_MODE)
	add_definitions(-O0 -Wall -DPROGRAM_VERSION="${PROGRAM_VERSION}")
	message(STATUS "ExempleGenerationDoc Debug mode")
	message(STATUS "ExempleGenerationDoc_VERSION : ${PROGRAM_VERSION}")
endif(RELEASE_MODE)

add_subdirectory(src)

if(DOC_MODE)
	##Generation of the documentation using doxygen
	find_path(DOXYGEN_DIR doxygen
	/usr/local/bin
	/usr/bin
	)
	if (DOXYGEN_DIR)
		#si vous allez voir dans le dossier build, vous allez trouver le fichier Doxyfile
		configure_file(Doxyfile.cmake Doxyfile)
		#on affiche quelques chemins pour être sûre de ce qu'on fait
		message(STATUS "Find Doxygen at ${DOXYGEN_DIR}")
		message(STATUS "-- Doxygen generation of the documentation")
		message(STATUS "Doxyfile in ${CMAKE_CURRENT_SOURCE_DIR}/build")
		#on génère la doc avec doxygen
		exec_program(doxygen
			"${CMAKE_CURRENT_SOURCE_DIR}"
			ARGS "${CMAKE_CURRENT_SOURCE_DIR}/build/Doxyfile"
		)
		add_subdirectory(doc)
	else (DOXYGEN_DIR)
		message(STATUS "Doxygen not found, I cannot generate the documentation")
	endif (DOXYGEN_DIR)
else(DOC_MODE)
	message(STATUS "No documentation")
endif(DOC_MODE)

Normalement nous avons déjà tout vu, c'est juste que là, nous avons tout fait dans le même fichier.