2017-05-16 3 views
0

Je dispose d'un fichier contenant CTestList.cmake cette définition de fonctions et d'appeler:Dans CTest, pourquoi l'argument variable de ma fonction n'est-il pas défini?

function(add_test_r testname) 
    add_test(
    ${testname} python executeRegressionTestCase.py ${testname} 
) 
endfunction(add_test_r) 

add_test_r(Test01) 

J'ai besoin pour effectuer des essais par CMake directement, cmake ..; make test, et par CTest sans courir CMake premier. Lorsque CMake crée la cible test et exécute make test, la fonction ci-dessus s'exécute correctement. Toutefois, lorsque je cours le même fichier avec CTest, ${testname} est vide. Les variables de fonction ne sont-elles pas supportées dans CTestList lors de l'exécution de CTest ou y a-t-il quelque chose qui me manque?

Répondre

0

Je n'ai pas de réponse définitive, mais après quelques tests, il semble que CMake effectue une étape de prétraitement pour les fichiers d'entrée. Plus précisément, il lit dans CTestList.cmake, évalue les variables et les fonctions et génère un CTestTestfile.cmake "étendu". L'exécution de CTest avec un script de pilotage n'exécute pas l'étape de prétraitement, de sorte que les variables et les fonctions ne sont pas développées. Quelques personnes sur Internet ont suggéré que le CTestTestfile.cmake utilisé dans le script de pilotage devrait être généré par CMake en premier lieu. Malheureusement, ce n'est pas le cas d'utilisation que je recherche, mais cela peut aider quelqu'un d'autre à rencontrer ce problème.