2015-05-01 2 views
2

В моем проекте CMake у меня есть несколько целей, которые просто запускают определенный набор модульных тестов (например, runTestsForA, runTestsForB и runTestsForC). У меня также есть цель, tests, которая зависит от всех этих целевых объектов объекта, поэтому я могу запустить их с помощью одной команды.Принудительное последовательное исполнение для конкретных целей в CMake

Я использую CLion - это моя IDE, которая пытается использовать параллельные make-сборки по умолчанию (которые я хочу, а также выполняю на сервере непрерывной интеграции). Тем не менее, похоже, что тесты также выполняются параллельно, и некоторые тесты для этого не выполняются (они используют локальный loopback для создания некоторой магии с сокетами), что иногда приводит к сбою.

Вот почему я хотел бы принудительно выполнить серийное исполнение для некоторых/всех зависимостей моей цели tests. К сожалению, документация CMake не помогла мне, когда я искал информацию о том, как это сделать. Что подводит меня к моим вопросам: это вообще возможно и как это можно сделать, если это так?

ответ

2

Вместо руководства tests целевая декларация вы можете использовать инструмент CTest. Используйте add_test команды для создания тестовых целей, то CMake будет автоматически создавать tests цели, которая будет работать все тесты:

enable_testing() 
add_test(NAME TestsForA COMMAND <command>) 
add_test(NAME TestsForB COMMAND <command>) 
set_tests_properties(TestsForA TestsForB PROPERTIES RUN_SERIAL TRUE) 

После этого вы можете запустить make tests или ctest в дереве сборки. Тесты будут сериализованы.

Более подробную информацию можно найти по адресу:

+0

В случае, если Вы не использовали dd_test, чтобы определить ваш тестовый пакет, и если вы используете что-то вроде add_custom_target (runTestsForA) ... Используйте add_dependencies (runTestsForA runTestsForB) –

+0

@MuraliPaluru Это было бы трудно сделать, так это не знаю, какие тестовые цели были определены. –

+0

@ jet47 Это, вероятно, подходит для моего использования, но что, если это не тесты, а некоторые другие инструменты. Каким будет правильный подход? –

Смежные вопросы