Bonjour,

depuis peu je me suis tourné vers cmake pour compiler mes projets, et reste assez novice face à cet outil. Comme j'aime bien vérifier les fuites de mémoire dans mes projets, j'utilise valgrind, et plus spécifiquement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
valgrind --leak-check=full
Or, je me suis rendu compte de quelquechose d'assez embêtant. Si j'inclue la bibliothèque gtk3 dans mon projet, c'est-à-dire grâce à cmake, comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
 
include_directories(${GTK3_INCLUDE_DIRS} include)
link_directories(${GTK3_LIBRARY_DIRS})
 
add_definitions(${GTK3_CFLAGS_OTHER} -g)
 
[...]
 
target_link_libraries(
	../bin/ExprCalc
	${GTK3_LIBRARIES}
)
j'obtiens plein d'erreurs du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
96 bytes in 1 blocks are possibly lost in loss record 216 of 243
==3587==    at 0x4C29860: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3587==    by 0x69B1CD8: g_malloc0 (in /usr/lib/libglib-2.0.so.0.3800.2)
==3587==    by 0x673EA14: ??? (in /usr/lib/libgobject-2.0.so.0.3800.2)
==3587==    by 0x673EA85: ??? (in /usr/lib/libgobject-2.0.so.0.3800.2)
==3587==    by 0x67431A3: g_type_register_fundamental (in /usr/lib/libgobject-2.0.so.0.3800.2)
==3587==    by 0x674B12D: ??? (in /usr/lib/libgobject-2.0.so.0.3800.2)
==3587==    by 0x671E9BC: ??? (in /usr/lib/libgobject-2.0.so.0.3800.2)
==3587==    by 0x400E8E9: call_init.part.0 (in /usr/lib/ld-2.18.so)
==3587==    by 0x400E9D2: _dl_init (in /usr/lib/ld-2.18.so)
==3587==    by 0x40012A9: ??? (in /usr/lib/ld-2.18.so)
Alors que si je retire, dans le fichier CMakeLists.txt tout ce qui fait référence à gtk3, il n'y a aucun souci, ça passe comme une lettre à la poste, et aucune erreur ne s'affiche .

Je vous remercie d'avance de toutes réponses