J'ai lu this brilliant tutorial sur la façon d'intégrer Google Test avec CMake. Les grandes lignes du projet ressemble là comme ceci:cmake: comment compiler séparément le code de production et le code de test
+-- CMakeLists.txt
+-- main
| +-- CMakeLists
| +-- main.cpp
|
+-- test
| +-- CMakeLists.txt
| +-- testfoo
| +-- CMakeLists.txt
| +-- main.cpp
| +-- testfoo.h
| +-- testfoo.cpp
| +-- mockbar.h
|
+-- libfoo
| +-- CMakeLists.txt
| +-- foo.h
| +-- foo.cpp
|
+-- libbar
+-- CMakeLists.txt
+-- bar.h
+-- bar.cpp
(Pour les intéressés, tout le code de cet exemple de projet peut être vérifié à partir here)
Le haut niveau CMakeLists.txt contient (entre autres) les énoncés enable_testing()
et add_subdirectory(test)
. Compilation et exécution des cas de test fonctionne parfaitement avec cette configuration, simplement en exécutant
mkdir build && cd build
cmake ..
make
make test
Mais comment pourrais-je compiler ce projet en code de production, à savoir que les composants test
, libfoo
et libbar
, sans tous les tests unitaires?
Dois-je faire les déclarations enable_testing()
et add_subdirectory(test)
dépend en quelque sorte sur certaines variables de configuration de construction? Ou quelle est la meilleure pratique pour cela?
Vous pouvez faire des appels de commande CMake ne dépend que de la configuration de construction en configuration unique 'environnements de make' . Je me demande si vous connaissez la propriété cible ['EXCLUDE_FROM_DEFAULT_BUILD_'] (https://cmake.org/cmake/help/latest/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.html) cible? –
Florian