我阅读了这篇关于如何将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
(如有兴趣,可以从此处检出示例项目的全部代码)
顶级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>
目标属性? - Florian