2017-01-17 4 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私が直接実行すると、プロジェクトローカルライブラリが使用されます。たぶん私はいくつかの設定をdebian/rulesに設定する必要があるかもしれませんが、私はちょうど私が必要とするもの – 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) 
関連する問題