我在我的项目中使用了CTest。我添加了简单的脚本来运行测试作为POST_BUILD
。当我使用 make
构建项目时,一切正常。
有趣的部分始于我使用 dpkg-buildpackage
构建包时。CTest 似乎在系统目录中查找库,而不是使用当前构建的库。有没有办法告诉CTest
或dpkg-buildpackage
在执行测试时使用当前构建的库?
CMake macro i use:
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}
)
好的,我已经想通了。因为我的库是用CMAKE_BINARY_DIR
编译的,所以我所需要的只是添加 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)