Замените команду ctest на "ctest --output-on-fail" навсегда для определенного проекта в CMakeLists.txt

Я нашел это общее ctest Команда не дает много информации о тестах, поэтому я хотел бы добавить ctest --output-on-failure но пользователи не должны беспокоиться о флаге. Я хочу, чтобы они просто cmake, make проект и запустить ctest, и он должен запустить ctest с --output-on-failure флаг. Возможно ли это сделать в CMakeLists.txt?

РЕДАКТИРОВАТЬ:

Выход из env CTEST_OUTPUT_ON_FAILURE=1 make test

 4/13 Test  #4: TEST_SSSP ........................***Failed  Required regular expression not found.Regex=[CORRECT
]  0.00 sec
Loading Matrix-market coordinate-formatted graph ...
Input graph file /home/muhammad/gunrock/dataset/small/chesapeake.mtx does not exis

Выход из set_property(TEST TestName PROPERTY ENVIRONMENT "CTEST_OUTPUT_ON_FAILURE=1")

 4/13 Test  #4: TEST_SSSP ........................***Failed  Required regular expression not found.Regex=[CORRECT
]  0.00 sec

Флаг в set_property не работает.

1 ответ

Решение

Я пошел с make check для решения: CMake: установка переменной окружения для ctest (или иным образом получение результатов неудачного теста из ctest/make test автоматически)

add_custom_target(check ${CMAKE_COMMAND} -E env CTEST_OUTPUT_ON_FAILURE=1
                  ${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

В примечаниях к выпуску CMake 3.17 есть новая переменная CMAKE_CTEST_ARGUMENTS, которую вы можете установить для передачи любых аргументов командной строки в CTest, включая--output-on-failure. В вашем конкретном случае теперь вы можете просто добавить это в свой CMakeLists.txt:

list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")
Другие вопросы по тегам