【问题标题】:How to set library path for CTest when building package with dpkg-builpackage?使用 dpkg-builpackage 构建包时如何为 CTest 设置库路径?
【发布时间】:2017-01-17 07:17:19
【问题描述】:

我在我的项目中使用 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}
)

【问题讨论】:

  • CTest seems to look for libraries in system directories instead of using a currently built one. - 更可能的是,您的环境被配置为优先选择系统目录中的库而不是项目本地的库。您是否尝试过直接调用example 可执行文件?在这种情况下使用哪些库?
  • @Tsyvarev 当我直接执行它时,它使用项目本地库。也许我需要为 debian/rules 设置一些设置,但我现在不知道我到底需要什么

标签: cmake dpkg ctest


【解决方案1】:

好的,我想通了。 因为我的库在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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2022-12-10
    • 2020-05-28
    • 1970-01-01
    • 2011-01-25
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多