Почему в CTest аргумент переменной для моей функции не задан?
У меня есть файл CTestList.cmake, содержащий определение этой функции и вызов:
function(add_test_r testname )
add_test(
${testname} python executeRegressionTestCase.py ${testname}
)
endfunction(add_test_r)
add_test_r(Test01)
Мне нужно поддерживать тестирование через CMake напрямую, cmake ..; make test
и через CTest без запуска CMake первым. Когда CMake создает test
цель и я бегу make test
вышеописанная функция выполняется нормально. Тем не менее, когда я запускаю тот же файл с CTest, ${testname}
пустой. Функциональные переменные не поддерживаются в CTestList при работе с CTest или мне чего-то не хватает?
1 ответ
У меня нет однозначного ответа, но после некоторого тестирования похоже, что CMake выполняет предварительную обработку входных файлов. В частности, он читает в CTestList.cmake, оценивает переменные и функции и генерирует "расширенный" CTestTestfile.cmake. Запуск CTest со сценарием управления не запускает этап предварительной обработки, поэтому переменные и функции не раскрываются. Несколько человек в интернете предположили, что CMakeTestfile.cmake, используемый в сценарии рулевого управления, должен быть сгенерирован CMake в первую очередь. К сожалению, это не тот вариант использования, который я ищу, но он может помочь кому-то еще столкнуться с этой проблемой.