1. ホーム
  2. cmake

[解決済み] CMakeを使用して、CTestから冗長出力を得るにはどうすればよいですか?

2022-06-22 11:44:19

質問

私は自分のプロジェクトをビルドするためにCMakeを使用しています。私はBoostユニットテストフレームワークを使用しているユニットテストバイナリを追加しました。この1つのバイナリは、すべてのユニットテストを含んでいます。私はCTestによって実行されるようにそのバイナリを追加しました。

ADD_EXECUTABLE( tftest test-main.cpp )
ENABLE_TESTING()
ADD_TEST( UnitTests tftest)

しかし、Visual Studioのビルド出力には、CTestを実行した結果しか表示されません。

      Start 1: UnitTests
  1/1 Test #1: UnitTests ................***Failed    0.05 sec

  0% tests passed, 1 tests failed out of 1

どのテストが失敗したのかがわからないので、これはあまり役に立ちません。コマンドラインから手動で --verbose で手動で実行すると、Boost ユニットテストの出力が得られ、実際に何が失敗したかがわかります。

1: Test command: tftest.exe
1: Test timeout computed to be: 9.99988e+006
1: Running 4 test cases...
1: test-main.cpp(20): error in "sanity_check3": check 1 == 2 failed
1:
1: *** 1 failure detected in test suite "Master Test Suite"
1/1 Test #1: UnitTests ................***Failed    0.00 sec

では、CMakeLists.txt のどこを変更すれば、CTest を次のように実行できるのでしょうか。 --verbose で実行させるためには、CMakeLists.txtをどのように変更すればよいのでしょうか?CMake/CTestでBoostユニットテストを使用するためのより良い方法はありますか?

どのように解決するのですか?

環境変数 CTEST_OUTPUT_ON_FAILURE を設定すると、テストが失敗したときにテストプログラムからの出力を表示することができます。Makefile とコマンドラインを使用する場合の一つの方法は、次のようになります。

env CTEST_OUTPUT_ON_FAILURE=1 make check

このStack Overflowの質問と回答 は、Visual Studio で環境変数を設定する方法を示しています。