2013-04-01 38 views

回答

1

你的樣品看起來很好 - 它應該可以使用或不使用include(CTest)系列。

更改CMakeLists.txt後可能沒有重新編譯,所以看起來make test什麼都不做?

如果省略了include(CTest)線,做make test,然後ctest -N應該輸出類似:

Test project <path to build> 

Total Tests: 0 

如果添加include(CTest)線,做make test,然後ctest -N應該輸出類似:

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

Total Tests: 1 

這應該是唯一的區別 - 測試用CTest註冊與否。在每種情況下,如果make test先前已成功運行,那麼make test的唯一效果就是重新運行CMake。如果運行間CMakeLists.txt中的更改不影響實際測試目標,則不會重建。

+0

我試過了,但它不起作用。 ('ctest -N'顯示正確的測試編號,但'make test'仍然按主題描述失敗)。你有沒有在頂層目錄下試用?我建立在./build目錄而不是在項目的頂層。 哦,而且「沒有任何東西是建造的」,因爲根本沒有可執行文件。我在每次迭代中清除一切,以確保沒有任何不妥。 –

+0

啊 - 我從來沒有發現這一點,因爲它不是在MSVC的Windows上的問題,但你不應該叫你的目標「測試」。嘗試將名稱更改爲例如「測試」或「my_test」。 (請參閱http://stackoverflow.com/a/736838/424459)。我會更新我的其他答案以反映這一點。另外,你需要從src/CMakeLists.txt中的'add_executable(demo main.cpp Sqr)'中刪除額外的'Sqr' – Fraser

+0

謝謝,爲我改變了測試工作的名字。 –