2

ここで説明したように、make "test" を実行してもテストがビルドされないことはよく知られている問題です。示唆されているように、問題は人工的なターゲット「チェック」で部分的に解決できます。「make Nightly」を呼び出したときにテストのビルドを強制する方法を知りたいです。

私がこれまでに行ったこと:

  add_custom_target(buildtests)
  add_custom_target(check COMMAND "ctest")
  add_dependencies(check buildtests)
  add_dependencies(Nightly buildtests)

  add_dependencies(buildtests Test1)
  ...
  add_dependencies(buildtests TestN)

「make check」はビルドしてテストを実行しますが、「make Nightly」は

  • テストをビルドします
  • リポジトリを CTEST_NIGHTLY_START_TIME に更新します
  • 他のすべてのターゲットをビルドします
  • (現在は古い) テストを実行します
4

2 に答える 2

2

そうです、実際に電話をかけたのは私自身のせいでした:

add_subdirectory(test EXCLUDE_FROM_ALL)

解決策は、それをに変更することでした

if(LEAVE_TEST_IN_ALL_TARGET) 
  add_subdirectory(test) 
else() 
  add_subdirectory(test EXCLUDE_FROM_ALL) 
endif() 

そして電話する

cmake ${SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET=ON make Nightly
于 2010-08-18T17:38:09.953 に答える
1

の出力を見ると、

cmake --help-command add_custom_target

ALL引数については、「ALLオプションが指定されている場合は、このターゲットをデフォルトのビルドターゲットに追加して、毎回実行されるようにする必要があることを示しています」と記載されています。この引数をカスタムターゲットに追加する必要があります。Nightlyターゲットはmakeを実行して、デフォルトのビルドターゲットですべてをビルドします。したがって、以下はそれを行う必要があります、

add_custom_target(buildtests)

もう1つのオプションは、カスタムCTestスクリプトを作成することです。これにより、プロジェクトのビルドとテストをよりきめ細かく制御できます。

于 2010-08-18T05:10:53.647 に答える