【发布时间】:2017-01-19 08:53:12
【问题描述】:
我阅读了this brilliant tutorial,了解如何将 Google Test 与 CMake 集成。那里的项目大纲如下所示:
+-- CMakeLists.txt
+-- main
| +-- CMakeLists
| +-- main.cpp
|
+-- test
| +-- CMakeLists.txt
| +-- testfoo
| +-- CMakeLists.txt
| +-- main.cpp
| +-- testfoo.h
| +-- testfoo.cpp
| +-- mockbar.h
|
+-- libfoo
| +-- CMakeLists.txt
| +-- foo.h
| +-- foo.cpp
|
+-- libbar
+-- CMakeLists.txt
+-- bar.h
+-- bar.cpp
(有兴趣的可以去here查看本示例项目的全部代码)
顶级 CMakeLists.txt 包含(以及其他)语句 enable_testing() 和 add_subdirectory(test)。编译和运行测试用例与此设置完美配合,只需运行
mkdir build && cd build
cmake ..
make
make test
但是我如何将这个项目编译成生产代码,即只有组件test、libfoo 和libbar,而没有所有的单元测试?
我是否应该使声明 enable_testing() 和 add_subdirectory(test) 以某种方式依赖于某些构建配置变量?或者这方面的最佳做法是什么?
【问题讨论】:
-
您可以在单一配置
make环境中仅根据构建配置进行 CMake 命令调用。我想知道您是否知道EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>目标属性?
标签: unit-testing cmake googletest