cmake / ctest: возможно ли использовать создание целей сборки в качестве тестов? - PullRequest
3 голосов
/ 14 октября 2011

У меня есть программа, которая читает описание формата файла (ISO 10303-11 для любопытных) и генерирует из него c ++. Сгенерированный код скомпилирован в библиотеку, и библиотека связана с различными исполняемыми файлами для чтения / записи этого формата файла.

Я настроил CMake для создания программы генератора и создания библиотек для файлов любого формата, указанного во время конфигурации.

Теперь я хочу добавить тесты. Эти тесты идентичны шагам, которые уже выполнены в процессе сборки. Должен ли я повторить эти шаги в скрипте CTest, или есть ли способ сообщить ctest о создании цели и перехватить любые сообщения об ошибках?

Ответы [ 2 ]

3 голосов
/ 15 октября 2011

Если вы используете достаточно свежую версию ctest (последняя официальная версия 2.8.6), то вы можете использовать подпись NAME / COMMAND для add_test вместе с опцией командной строки cmake --build, чтобы создать конкретную цели в вашем дереве сборки.

Например, следующее должно работать, предполагая пользовательскую цель (или библиотеку или исполняемую цель) с именем "tgt1":

add_test(NAME test.build.tgt1
  WORKING_DIRECTORY ${CMAKE_BINARY_DIRECTORY}
  COMMAND ${CMAKE_COMMAND} --build . --target tgt1 --config $<CONFIGURATION>
)

Это работает кроссплатформенно с одинаковым синтаксисом везде. Он даже работает с мультиконфигурационными генераторами, такими как Visual Studio и Xcode.

0 голосов
/ 14 октября 2011

Вы пытались сказать enable_testing() в своем файле CMakeLists.txt, а затем позвонить add_test(), чтобы создать тестовую цель?Я думаю, что вы можете сделать все в одном консолидированном скрипте сборки, если будете следовать документации CMake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...