2016-11-13 3 views
0

J'essaie de faire fonctionner CMake/CTest. Mon problème est que CTest ne semble pas ramasser un exécutable de test à moins qu'il ne soit nommé tests.Impossible d'exécuter ctest sauf si l'exécutable de test est nommé "tests"

Dans mon exemple de projet minimal J'ai un seul fichier CMakeLists.txt:

cmake_minimum_required(VERSION 3.0) 
project(myproject C) 
enable_testing() 
set(TEST_EXE_NAME tests) 
add_executable(${TEST_EXE_NAME} test_main.c) 
add_test(NAME "My tests" COMMAND ${TEST_EXE_NAME}) 

... et un programme de test très simple, test_main.c, qui passe toujours:

int main() { 
    return 0; 
} 

je peux exécuter make && make test, et tout va bien tant que TEST_EXE_NAME est réglé sur tests. Cependant, lorsque je change le nom de l'exécutable en quelque chose d'autre, par exemple. mytests, je reçois l'erreur suivante:

Could not find executable tests 
Looked in the following places: 
tests 
tests 
Release/tests 
Release/tests 
Debug/tests 
... 

Qu'est-ce que je manque?

+0

Avez-vous recompilé/re-faire après avoir changé le nom? Si ce n'est pas le cas, Ctest cherchera le nouveau nom, mais les fichiers sont toujours en nom avec l'ancien. – ollo

+0

Oui, je fais un rm -rf complet ./* && cmake PATHTOSOURCE && make && make test –

Répondre

2

Selon le CMake manual pour add_test() le nom de test ne peut pas contenir des espaces:

The test name may not contain spaces, quotes, or other 
characters special in CMake syntax. 

Dans l'exemple problématique, le test a été nommé "Mes tests". Changer le nom du test en "My_tests" résout le problème.

Apparemment, la partie du nom de test après le caractère espace (c'est-à-dire "tests") a été interprétée comme le nom de l'exécutable de test.

+0

Si votre problème est résolu, s'il vous plaît * accepter * votre réponse pour marquer cette question comme résolue. – ollo