我的项目结构是https://github.com/yumyai/cmake-sample。它类似于此线程CMake: Project structure with unit tests中的项目。
每当我添加include(CTest)
到顶级 CMakeLists.txt 中时,我都无法构建测试文件(make test
不构建任何东西)。但是,如果我注释掉,我可以使用很好的include(CTest)
方式构建单元测试执行程序。make test
这是正常行为还是我忘记了什么?
我的项目结构是https://github.com/yumyai/cmake-sample。它类似于此线程CMake: Project structure with unit tests中的项目。
每当我添加include(CTest)
到顶级 CMakeLists.txt 中时,我都无法构建测试文件(make test
不构建任何东西)。但是,如果我注释掉,我可以使用很好的include(CTest)
方式构建单元测试执行程序。make test
这是正常行为还是我忘记了什么?
您的示例看起来不错 - 它应该可以使用或不使用该include(CTest)
线。
可能是在更改 CMakeLists.txt 后没有重新编译任何内容,所以看起来make test
什么都不做?
如果省略该include(CTest)
行并执行make test
,ctest -N
则应输出如下内容:
Test project <path to build>
Total Tests: 0
如果添加include(CTest)
line 和 do make test
,ctest -N
则应输出如下内容:
Test project <path to build>
Test #1: SqrTest
Total Tests: 1
这应该是唯一的区别 - 测试是否在 CTest 注册。在每种情况下,如果make test
之前已成功运行,那么make test
真正产生的唯一效果就是重新运行 CMake。如果运行之间 CMakeLists.txt 中的更改不影响实际的测试目标,则不会重建它。