использовать set_tests_properties из теста в другом каталоге - PullRequest
0 голосов
/ 30 января 2019

(относится к добавить стандартные библиотеки в RPATH для исполняемых файлов дерева сборки )

У меня есть следующая структура каталогов в качестве минимального рабочего примера

.
├── baz.cc
├── baz.h
├── CMakeLists.txt
└── sub
    ├── CMakeLists.txt
    └── foo.cc

subна практике является подмодулем git и не должен редактироваться для моего конкретного углового случая, но остается общим.

sub/CMakeLists.txt определяет тест, который не запускается в моей настройке, поскольку разделяемая библиотека не добавляется в RPATHCMake.Чтобы воспроизвести это поведение, можно подумать, что

enable_testing()
add_executable(foo foo.cc)
set_property(TARGET foo PROPERTY SKIP_BUILD_RPATH TRUE)
target_link_libraries(foo ${CMAKE_CURRENT_BINARY_DIR}/../libbaz.so)
include_directories(..)
add_test(NAME footest COMMAND foo)

(foo.cc может быть:

#include "baz.h"
int main() { 
  return bazinga() - 42;
} 

давайте предположим, что общая библиотека с символом bazinga всегда будет доступнаНапример, от /usr/lib)

Мой верхний уровень CMakeLists.txt -

add_subdirectory(sub)
add_library(baz SHARED baz.cc)

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

set_tests_properties(footest PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=/path_where_libbaz.so_is_on_my_target_system")

Эта строка выполняет работу, когда я добавляю ее в sub/CMakeLists.txt, но завершается неудачно со следующей ошибкой при редактировании верхнего уровня CMakeLists.txt

CMake Error at CMakeLists.txt:3 (set_tests_properties):
  set_tests_properties Can not find test to add properties to: footest

учитывая вышеуказанную причину, я хочу сделать исправление, ничего не редактируя в каталоге sub.

Есть ли способ установить свойства тестов, которые определены в других каталогах, отличных от текущего?

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