2017-01-17 6 views
1

J'utilise CTest dans mon projet. J'ai ajouté un script simple pour exécuter des tests en tant que POST_BUILD. Tout fonctionne bien quand je construis le projet avec make.Comment définir le chemin de la bibliothèque pour CTest lors de la construction du paquet avec dpkg-builpackage?

La partie intéressante commence quand je construis un paquet avec dpkg-buildpackage. CTest semble chercher des bibliothèques dans les répertoires système au lieu d'en utiliser une actuellement construite. Y a-t-il un moyen de dire à CTest ou dpkg-buildpackage d'utiliser une bibliothèque actuellement construite lors de l'exécution des tests?

macro CMake i utiliser:

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 semble rechercher des bibliothèques dans les répertoires du système au lieu d'utiliser un actuellement construit one.' - Plus probablement, il est juste ** votre environnement ** est configuré pour préférer les bibliothèques dans les répertoires système aux projets locaux. Avez-vous essayé d'appeler le fichier exécutable 'example' directement? Quelles bibliothèques sont utilisées dans ce cas? – Tsyvarev

+1

@ Tsyvarev quand je l'exécute directement, il utilise des bibliothèques locales. Peut-être que j'ai besoin de définir des paramètres pour debian/rules, mais je ne sais pas exactement de quoi j'ai besoin – Yaroslav

Répondre

0

Ok, donc je l'ai compris. Parce que ma bibliothèque se compile en CMAKE_BINARY_DIR, tout ce dont j'avais besoin est d'ajouter LD_LIBRARY_PATH à chaque test dans le projet.

Alors macro ressemble maintenant à ceci:

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)