我在我的项目中使用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}
)
答案 0 :(得分:0)
好的,所以我已经弄清楚了。
因为我的lib在LD_LIBRARY_PATH
编译,所以我需要的是添加
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)
对项目中的每个测试都有所了解。
所以宏现在看起来像这样:
12hju 1002