2017-01-17 9 views
1

내 프로젝트에서 CTest를 사용하고 있습니다. 테스트를 실행하는 간단한 스크립트를 POST_BUILD으로 추가했습니다. make으로 프로젝트를 빌드하면 모든 것이 잘 작동합니다.dpkg-builpackage로 패키지를 빌드 할 때 CTest에 라이브러리 경로를 설정하는 방법은 무엇입니까?

dpkg-buildpackage으로 패키지를 만들 때 흥미로운 부분이 시작됩니다. CTest는 현재 빌드 된 것을 사용하는 대신 시스템 디렉토리에서 라이브러리를 찾는 것처럼 보입니다. 테스트를 실행하는 동안 CTest 또는 dpkg-buildpackage에 현재 빌드 된 라이브러리를 사용하도록 지시하는 방법이 있습니까?

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

@Tsyvarev 직접 실행할 때 프로젝트 로컬 라이브러리를 사용합니다. 어쩌면 나는 데비안/규칙에 대한 설정을해야 할 필요가 있지만, 지금은 정확히 내가 필요로하는 것이 아니다. – Yaroslav

답변

0

좋아, 내가 그것을 알아 냈어요 :

CMake 매크로는 내가 사용합니다. 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)