Hé oui, me revoilà !
J'essaie de suivre les recommandations qui m'ont été données il y a quelques temps, ie utiliser boost test et cmake pour les tests unitaires de ma petite bibliothèque header-only. Cmake m'a posé quelques soucis mais après quelques tutos j'ai fini par (entre)voir comment ça marchait, en tout cas suffisamment pour écrire un CmakeList.txt capable de faire tourner un seul test boost tout simplet. Maintenant je bloque sur la structure générale à donner aux tests et au projet Cmake.
Première question : où est-ce que je mets le(s) script CmakeList.txt ? J'imaginais mettre le script suivant dans le dossier ma_lib/test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12ma_lib \_ modules \_ moduleA \_ A1.h \_ A2.h \_ moduleB \_ B.h \_ test \_ integration_test \_ unit_test \_ ma_lib.h #include tous les headers des tous les modules de la lib
et puis dans chaque sous dossier integration_test et unit_test mettre à nouveau un CmakeList.txt du genrecmake_minimum_required(VERSION 3.0)
project(ma_lib_test)
add_subdirectory(unit_test)
add_subdirectory(integration_test)
Cela vous paraît-il correct ? J'imagine que non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 cmake_minimum_required(VERSION 3.10) #ai-je besoin de redéfinir ça ? FIND_PACKAGE(Boost) IF (Boost_FOUND) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) ADD_DEFINITIONS( "-DHAS_BOOST" ) ENDIF() FIND_PACKAGE(GDAL) IF (GDAL_FOUND) INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR}) ENDIF() # creates the executable add_executable(integration integration.cpp)
Une autre petite question, comment rendre compte des dépendances à ma_lib dans les scripts de test ? Une directive #include "../../../ma_lib/ma_lib.h" me paraît pas topissime, n'est-ce pas ?
Une (dernière, promis) question: faut-il dans les tests unitaires rendre compte de la structure des modules de la lib, en mettant une hiérarchie de dossiers modules/module1/sousmodule1A etc ? Si oui, comment Cmake s'inscrit là dedans ?
Voili voilou, encore une fois désolé si tout ça tient de l'évidence ahaha mais j'ai du mal à trouver ce genre d'info générale sur *un moteur de recherche parmi les autres*
En vous remerciant d'avance,
Seab
Partager