(与add standard libraries to RPATH for build tree executables相关)
我具有以下目录结构作为最小的工作示例
.
├── baz.cc
├── baz.h
├── CMakeLists.txt
└── sub
├── CMakeLists.txt
└── foo.cc
sub
实际上是git子模块,不应针对我的特殊情况进行编辑,而应保持通用。
sub/CMakeLists.txt
定义了一个无法在我的设置中运行的测试,因为cmake不会将共享库添加到RPATH中。要重现此行为,可以认为是
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)
我想通过按照建议的here操纵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
目录中的任何内容的情况下进行修复。
是否可以设置除当前目录以外的其他目录中定义的测试属性?