在其他目录中使用来自test的set_tests_properties

时间:2019-01-30 19:01:29

标签: cmake

(与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目录中的任何内容的情况下进行修复。

是否可以设置除当前目录以外的其他目录中定义的测试属性?

0 个答案:

没有答案