2010-07-20 7 views
2

Il est un problème bien connu que l'exécution faire « test » ne construit pas les tests comme discuté here. Comme suggéré, le problème peut être partiellement résolu avec la cible artificielle "vérifier". Je veux savoir comment je peux forcer la construction de tests quand j'appelle "make Nightly".CMake et CTest: Comment faire la cible « nuit » construire en fait les essais

Ce que je l'ai fait jusqu'à présent:

add_custom_target(buildtests) 
    add_custom_target(check COMMAND "ctest") 
    add_dependencies(check buildtests) 
    add_dependencies(Nightly buildtests) 

    add_dependencies(buildtests Test1) 
    ... 
    add_dependencies(buildtests TestN) 

Maintenant "make check" builds une exécute les tests, mais "faire nuit"

  • builds les essais
  • met à jour le repo à CTEST_NIGHTLY_START_TIME
  • builds toutes les autres cibles
  • exécute les tests (maintenant obsolètes)

Répondre

1

Si vous regardez la sortie,

cmake --help-command add_custom_target

Il mentionne l'argument ALL, « Si l'option ALL est spécifié, il indique que cet objectif devrait être ajouté à la cible de construction par défaut afin que sera exécuté à chaque fois ". Vous devez ajouter cet argument à votre cible personnalisée, et la cible Nightly exécute une make pour construire tout dans la cible de construction par défaut. Donc, ce qui suit devrait le faire,

add_custom_target(buildtests)

Votre autre option serait d'écrire un script CTest personnalisé, qui vous donne un contrôle beaucoup plus fin grain de la construction et l'essai de votre projet.

+0

Votre droit , il était en fait ma faute pour appeler: add_subdirectory (test EXCLUDE_FROM_ALL) La solution était de changer pour si (LEAVE_TEST_IN_ALL_TARGET) add_subdirectory (test) autre() add_subdirectory (test EXCLUDE_FROM_ALL) endif() puis appelez CMake $ {} SRC_DIR -DLEAVE_TEST_IN_ALL_TARGET = ON make Nightly – bgp2000

1

Vous avez raison, il était en fait ma faute pour appeler:

add_subdirectory(test EXCLUDE_FROM_ALL) 

La solution était de changer pour

if(LEAVE_TEST_IN_ALL_TARGET) 
    add_subdirectory(test) 
else() 
    add_subdirectory(test EXCLUDE_FROM_ALL) 
endif() 

puis appelez

cmake ${SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET=ON make Nightly 
Questions connexes