1

私のプロジェクト構造はhttps://github.com/yumyai/cmake-sampleです。これは、このスレッドCMake: Project structure with unit testsの project に似ています。

include(CTest)最上位の CMakeLists.txtに追加するたびに、テスト ファイルをビルドできませんでした (make test何もビルドしません)。しかし、コメントアウトすれば、問題なくinclude(CTest)単体テスト exec をビルドできmake testます。

これは正常な動作ですか、それとも何かを忘れましたか?

4

1 に答える 1

1

あなたのサンプルは問題ないように見えます - それはinclude(CTest)線の有無にかかわらず動作するはずです.

CMakeLists.txt を変更した後に何も再コンパイルされていない可能性があるため、何もしていないように見えmake testますか?

行を省略してinclude(CTest)do を実行するとmake test、次のctest -Nような出力が得られます。

 Test project <path to build>

 Total Tests: 0

行を追加include(CTest)して do を実行するとmake test、次ctest -Nのような出力が得られます。

 Test project <path to build>
 Test #1: SqrTest

 Total Tests: 1

これが唯一の違いです。テストが CTest に登録されているかどうかです。いずれの場合も、make testが以前に正常に実行されていれば、 make testCMake を再実行するだけで効果があります。実行間の CMakeLists.txt の変更が実際のテスト ターゲットに影響しない場合は、再構築されません。

于 2013-04-01T06:51:52.137 に答える