2012-09-07 6 views
5

私はシステムと私のユニットテストをビルドするためにCMakeを使用しています。CMakeユニットテストでテストファイルをインストールする方法

私もアウトソースビルドを行っています。

私はADD_TEST()コマンドを使ってテスト実行ファイルをインストールする必要がないことを発見しました。これはmake installを実行すると実行されます。これは素晴らしいことです。

しかし、私の単体テストは、実行可能ファイルがどこにビルドされる必要があるいくつかの入力ファイルに依存します。

ここにがどこに指定されていないので、INSTALL()を使用してファイルをコピーすることはできません。ビルドコマンドがどこに呼び出されたかによって異なります。

私はテストファイルを実行可能ファイルをビルドするのと同じ場所にコピーするようにCMakeに指示する方法はありますか?入力ファイルは、ビルドによって生成何かに依存している場合、あなたはそれのためにターゲットを作成し、all対象に追加することができ

execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${fileFrom} ${fileTo}) 

答えて

1

はこれが最善の解決策ではないかもしれないが、現在、私はこれをやっている:そして、あなたのビルドディレクトリにコピーを行うトリックをやっているように見える

file(COPY my_directory DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) 

を。

+1

動作しますが、コピーは設定時に発生します。 – fgiraldeau

3

確かに、あなたは、構成ステップにこの方法でこれを行うことができます:

add_custom_target(copy_my_files ALL 
    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${fileFrom} ${fileTo} 
    DEPENDS ${fileFrom} 
) 
+0

変数 'CMAKE_PROGRAM'は代わりに' CMAKE_COMMAND'にする必要があります。 – fgiraldeau

7

あなたは、パラメータCOPYONLYconfigure_fileを使用することができます。 $ {CMAKE_CURRENT_BINARY_DIR}

+0

例:http://stackoverflow.com/a/1587317/1808261 – dtmland

0

質問はかなり古いですが、私の意見では、あなたが必要とするファイルを${CMAKE_CURRENT_BINARY_DIR})にコピーするよりも、問題の方がより良い解決策があります。 add_testコマンドには、テストが実行されるディレクトリを選択できるようにするWORKING_DIRECTORYオプションがあります。だから私は次の解決策を提案します:

add_executable(testA testA.cpp) 
add_test(NAME ThisIsTestA COMMAND testA WORKING_DIRECTORY ${DIRECTORY_WITH_TEST_DATA}) 

これは、入力ファイルの不要なコピーを回避します。

関連する問題