2017-01-17 13 views
1

Я использую CTest в своем проекте. Я добавил простой скрипт для запуска тестов как POST_BUILD. Все работает отлично, когда я строю проект с make.Как установить путь библиотеки для CTest при создании пакета с dpkg-builpackage?

Интересная часть начинается, когда я строю пакет с 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

'CTest, кажется, искать библиотеки в системные каталоги, вместо того, чтобы использовать в настоящее время построен one.' - Скорее всего, это просто ** среда ** является сконфигурированные для предпочтения библиотек в системных каталогах поверх локальных проектов. Вы пытались напрямую вызвать исполняемый файл 'example'? Какие библиотеки используются в этом случае? – Tsyvarev

+1

@ Цыварев, когда я выполняю его напрямую, он использует проект-локальные библиотеки. Может быть, мне нужно установить некоторые параметры для debian/rules, но я просто не понимаю, что именно мне нужно – Yaroslav

ответ

0

Хорошо, так что я понял это. Потому что мой 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)