使用 dpkg-builpackage 构建包时如何设置 CTest 的库路径?
How to set library path for CTest when building package with dpkg-builpackage?
我在我的项目中使用 CTest。我将简单的脚本添加到 运行 测试中作为 POST_BUILD
。当我使用 make
.
构建项目时一切正常
当我使用 dpkg-buildpackage
构建包时,有趣的部分开始了。 CTest 似乎在系统目录中寻找库,而不是使用当前构建的库。有没有办法告诉 CTest
或 dpkg-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)
我在我的项目中使用 CTest。我将简单的脚本添加到 运行 测试中作为 POST_BUILD
。当我使用 make
.
当我使用 dpkg-buildpackage
构建包时,有趣的部分开始了。 CTest 似乎在系统目录中寻找库,而不是使用当前构建的库。有没有办法告诉 CTest
或 dpkg-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)