Почему в 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 в первую очередь. К сожалению, это не тот вариант использования, который я ищу, но он может помочь кому-то еще столкнуться с этой проблемой.

Другие вопросы по тегам