1

我的项目结构是https://github.com/yumyai/cmake-sample。它类似于此线程CMake: Project structure with unit tests中的项目。

每当我添加include(CTest)到顶级 CMakeLists.txt 中时,我都无法构建测试文件(make test不构建任何东西)。但是,如果我注释掉,我可以使用很好的include(CTest)方式构建单元测试执行程序。make test

这是正常行为还是我忘记了什么?

4

1 回答 1

1

您的示例看起来不错 - 它应该可以使用或不使用该include(CTest)线。

可能是在更改 CMakeLists.txt 后没有重新编译任何内容,所以看起来make test什么都不做?

如果省略该include(CTest)行并执行make testctest -N则应输出如下内容:

 Test project <path to build>

 Total Tests: 0

如果添加include(CTest)line 和 do make testctest -N则应输出如下内容:

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

 Total Tests: 1

这应该是唯一的区别 - 测试是否在 CTest 注册。在每种情况下,如果make test之前已成功运行,那么make test真正产生的唯一效果就是重新运行 CMake。如果运行之间 CMakeLists.txt 中的更改不影响实际的测试目标,则不会重建它。

于 2013-04-01T06:51:52.137 回答