projtec:cmake
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projtec:cmake [2017/11/23 08:40] – [Tests Unitaires] orel | projtec:cmake [2024/03/18 15:06] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 41: | Line 41: | ||
| | ||
Un des avantages de cette méthode est quelle permet de ne pas mélanger les fichiers générés par CMake et Make avec les fichiers sources. Du coup, il suffit de supprimer le répertoire //build// pour tout nettoyer. | Un des avantages de cette méthode est quelle permet de ne pas mélanger les fichiers générés par CMake et Make avec les fichiers sources. Du coup, il suffit de supprimer le répertoire //build// pour tout nettoyer. | ||
+ | |||
==== Un peu plus compliqué ==== | ==== Un peu plus compliqué ==== | ||
Line 191: | Line 192: | ||
make test | make test | ||
+ | ==== Fuites Mémoire ==== | ||
Pour aller un peu plus loin, on peut lancer des tests de varification de la mémoire (memcheck) : | Pour aller un peu plus loin, on peut lancer des tests de varification de la mémoire (memcheck) : | ||
Line 196: | Line 198: | ||
make ExperimentalMemCheck | make ExperimentalMemCheck | ||
| | ||
- | Ces tests se base sur la varaible | + | Ces tests se base sur la variable |
+ | |||
+ | Les logs sont disponibles dans : Testing/ | ||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | find_program(MEMORYCHECK_COMMAND valgrind) | ||
+ | set(MEMORYCHECK_COMMAND_OPTIONS " | ||
+ | |||
+ | |||
+ | ==== Couverture de Code ==== | ||
Pour aller encore plus loin... | Pour aller encore plus loin... | ||
Line 203: | Line 215: | ||
cmake_minimum_required(VERSION 3.0) | cmake_minimum_required(VERSION 3.0) | ||
- | option(ENABLE_DEBUG "debug options" | + | include(CTest) |
- | if(ENABLE_DEBUG) | + | enable_testing() |
- | set(CMAKE_C_FLAGS " | + | |
- | set(CMAKE_LD_FLAGS " | + | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c99 -g --coverage" |
- | else() | + | |
- | set(CMAKE_C_FLAGS " | + | |
- | endif() | + | |
add_executable(foo foo.c) | add_executable(foo foo.c) | ||
+ | |||
+ | add_test(test1 ./foo 2) | ||
+ | add_test(test2 ./foo 5) | ||
+ | </ | ||
+ | |||
+ | cmake . | ||
+ | make ExperimentalTest # ou make test | ||
+ | make ExperimentalCoverage | ||
+ | more Testing/ | ||
+ | |||
+ | Il est plus élégant de n' | ||
+ | |||
+ | <code text tests/ | ||
+ | cmake_minimum_required(VERSION 3.0) | ||
include(CTest) | include(CTest) | ||
enable_testing() | enable_testing() | ||
+ | |||
+ | set(CMAKE_C_FLAGS " | ||
+ | set(CMAKE_C_FLAGS_DEBUG " | ||
+ | |||
+ | add_executable(foo foo.c) | ||
add_test(test1 ./foo 2) | add_test(test1 ./foo 2) | ||
Line 220: | Line 248: | ||
</ | </ | ||
- | | + | |
- | make test | + | Il faut alors compiler le code en mode DEBUG (et non pas en mode RELEASE) : |
+ | |||
+ | | ||
+ | make ExperimentalTest | ||
make ExperimentalCoverage | make ExperimentalCoverage | ||
more Testing/ | more Testing/ | ||
- | + | ||
- | __Nota Bene__ : Est-ce la bonne façon de faire ? Ne fait-il pas mieux utiliser CMAKE_C_FLAGS_DEBUG avec CMAKE_BUILD_TYPE. | + | |
- | | + |
projtec/cmake.1511426440.txt.gz · Last modified: 2024/03/18 15:05 (external edit)