我的项目结构是https://github.com/yumyai/cmake-sample。它类似于此线程CMake: Project structure with unit tests中的项目。
每当我将include(CTest)
添加到顶级CMakeLists.txt中时,我都无法构建测试文件(make test
不会构建任何内容)。但如果我评论include(CTest)
,我可以使用make test
构建单元测试执行程序就好了。
这是正常行为还是我忘记了什么?
答案 0 :(得分: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中的更改不影响实际测试目标,则不会重建它。