2017-09-27 13 views
0

ビルドタイプに応じてテストを実行するCMakeプロジェクトを作成しようとしています。 など。パフォーマンスビルドを行う場合、パフォーマンステストなどを実行したい。ctestはビルドタイプ固有のテストを呼び出さない

add_testがその目的のためにCONFIGURATIONSパラメータを提供することがわかった。しかし、そこにビルドタイプを指定すると、ctestはテストを見つけることができません。

動作を再現する最小限のCMakeLists.txtです。シェルで

project (test NONE) 
include (CTest) 

add_test (NAME test 
    CONFIGURATIONS Release 
  COMMAND cowsay) 

mkdir build 
cd build 
cmake -DCMAKE_BUILD_TYPE=Release ..  
cmake --build . 
ctest 

出力:

Running tests...  
Test project /home/phil/cmaketest/build  
No tests were found!!! 

私が実行している場合は

ctest -C Release 

I取得希望の動作、テストが実行される。すなわち、しかし、私はむしろ手で-C Releaseと入力してください。

ここで何か間違っているのですか?

答えて

1

add_test (... CONFIGURATIONS ...)は、正確に後でctest -C ...で特定の構成のテストを実行するためのものです。

はい、これが対象です。これは、同じ構成で単一構成環境と複数構成環境の両方をサポートするという理由からです。

あなたが唯一のシングル構成の環境をサポートしたい場合は、行うことができます:

if (CMAKE_BUILD_TYPE MATCHES "Release") 
    add_test (
     NAME test 
     COMMAND cowsay 
    ) 
endif() 
+0

これで奇妙なことは、さまざまなテストがビルドステップで異なるコンパイル/リンクフラグを必要とするが、私のような何かを行うことができるということです'cmake -DCMAKE_BUILD_TYPE = Release ..でリリースビルドを行う。 cmake --build .'を実行し、 'ctest -C Coverage'でコードカバレッジテストを開始します。しかし、これは明らかに禁止されるべきです。しかし、私の現在の設定では無意味な結果しか得られません。 – user26756

関連する問題