使用 dpkg-builpackage 构建包时如何设置 CTest 的库路径?

How to set library path for CTest when building package with dpkg-builpackage?

我在我的项目中使用 CTest。我将简单的脚本添加到 运行 测试中作为 POST_BUILD。当我使用 make.

构建项目时一切正常

当我使用 dpkg-buildpackage 构建包时,有趣的部分开始了。 CTest 似乎在系统目录中寻找库,而不是使用当前构建的库。有没有办法告诉 CTestdpkg-buildpackage 在执行测试时使用当前构建的库?

我使用的 CMake 宏:

add_executable(example tests/example.cpp)
target_link_libraries(example my_lib)
enable_testing()

macro(add_unit_test target test)
    list(APPEND tests ${test})
    add_test(${target} ${test})
endmacro(add_unit_test)

add_unit_test(test_example example)

add_custom_target(all_tests ALL DEPENDS ${tests})

add_custom_command(
    TARGET all_tests
    COMMENT "Run tests"
    POST_BUILD COMMAND ctest ARGS --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

好的,我已经弄明白了。 因为我的 lib 在 CMAKE_BINARY_DIR 中编译,所以我只需要添加 LD_LIBRARY_PATH prorerty 到项目中的每个测试。

所以宏现在看起来像这样:

macro(add_unit_test target test)
    list(APPEND tests ${test})
    add_test(${target} ${test})
    set_property(TEST ${target} PROPERTY ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}")
endmacro(add_unit_test)