(относится к добавить стандартные библиотеки в 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
.
Есть ли способ установить свойства тестов, которые определены в других каталогах, отличных от текущего?