CMake предварительно загружает каждый тест с библиотекой

В нашем приложении для Linux мы используем библиотеку с предустановленной LD_PRELOAD.

Я бы хотел, чтобы для каждого теста была предварительно загружена одна и та же библиотека. Мы используем CMake в качестве инструмента сборки.

Могу ли я сказать CMake, что он должен добавлять LD_PRELOAD в среду для каждого выполняемого теста.

Тест выполняется с make test.


person woodtluk    schedule 11.01.2018    source источник


Ответы (1)


Если вы используете add_test для регистрации отдельных тестов, наиболее надежный способ добиться этого — использовать проверить свойства. ENVIRONMENT свойство позволяет указать произвольные переменные среды, которые устанавливается для запуска теста:

add_test(NAME some_test COMMAND some_test_target)
add_test(NAME some_other_test COMMAND other_test_target)

set_property(TEST some_test some_other_test
   PROPERTY
   ENVIRONMENT LD_PRELOAD=/path/to/preload.so)

Вы также можете экранировать свойство с помощью выражение генератора, чтобы тесты переносились на платформы, не поддерживающие LD_PRELOAD.

person ComicSansMS    schedule 11.01.2018
comment
Благодарю вас! Можно ли добавить это явно ко всем тестам, которые были добавлены с помощью add_test, чтобы мне не нужно было явно перечислять их все в команде set_property. - person woodtluk; 18.01.2018
comment
@woodtluk Афаик, нет. Некоторым здесь нравится добавлять функцию-оболочку вокруг add_test, которая делает это автоматически. Лично у меня обычно нет больших проблем с написанием таких вещей явно. В конце концов, это вопрос, основанный на мнении, который во многом зависит от специфики вашего проекта, поэтому вам придется решить, как лучше всего это сделать для вашего проекта. - person ComicSansMS; 18.01.2018