2017-01-17 1 views
1

Ich verwende CTest in meinem Projekt. Ich fügte einfaches Skript hinzu, um Tests als POST_BUILD auszuführen. Alles funktioniert gut, wenn ich ein Projekt mit make baue.Wie wird der Bibliothekspfad für CTest beim Erstellen eines Pakets mit dpkg-builpackage festgelegt?

Der interessante Teil beginnt, wenn ich Paket mit dpkg-buildpackage baue. CTest scheint nach Bibliotheken in Systemverzeichnissen zu suchen, anstatt eine aktuell erstellte zu verwenden. Gibt es eine Möglichkeit, CTest oder dpkg-buildpackage mitzuteilen, eine aktuell erstellte Bibliothek zu verwenden, während Tests ausgeführt werden?

CMake Makro i verwenden:

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 scheint für Bibliotheken in Systemverzeichnissen zu suchen, anstatt eine zur Zeit gebaut one.' der Verwendung - Wahrscheinlicher ist, ist es nur ** Ihre Umgebung ** ist konfiguriert, um Bibliotheken in Systemverzeichnissen gegenüber projektlokalen vorzuziehen. Haben Sie versucht, 'example' ausführbare Datei direkt aufzurufen? Welche Bibliotheken werden in diesem Fall verwendet? – Tsyvarev

+1

@Tsyvarev Wenn ich es direkt ausführe, verwende ich projektlokale Bibliotheken. Vielleicht muss ich einige Einstellungen auf debian/rules setzen, aber ich weiß jetzt einfach nicht, was genau ich brauche – Yaroslav

Antwort

0

Okay, ich habe es herausgefunden. Da meine Lib in CMAKE_BINARY_DIR kompiliert, ist alles, was ich brauche, um LD_LIBRARY_PATH Prorerty zu jedem Test im Projekt hinzuzufügen.

So Makro sieht nun wie folgt aus:

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) 
Verwandte Themen