CMAKE <-> make 和单元测试:创建除非明确命名否则不会编译的目标

cmake <-> make and unit testing: creating targets that don't compile unless named explicetly

本文关键字:目标 编译 make gt lt 单元测试 CMAKE 创建      更新时间:2023-10-16

我想在模块中使用gtest构建单元测试。每个模块通常是多个可测试单元的集合。在开发模块的同时,我一次创建一个单元测试,完成后,我将它们合并为整个模块的一个单元。

为了便于说明,每个测试看起来都是这样的。

// file test1.cc
TEST1()
{
}
TESTn
{
)
#ifdef ISOLATED_TEST_COMPILE
int main()
{
   /* google test boiler plate */
}
#endif

一个连接测试的文件看起来像这个

#include "test1.cc"
#include "testn.cc"
int main()
{
   /* google test boiler plate */
}

因此,我不希望生成的make-build只在命名时构建单独的测试,也不希望在"all"目标中包含单独的测试。整个模块统一单元测试构建应该在所有目标中。

我不希望make all重复编译单个测试。

如果单元测试不在生产中,那么快速而肮脏的方法就是使用#ifdef,与上面的方法相同。

然后你只需要像这样包装ifdefs的定义。

#ifdef ALL
  ...
#else
  #define UNIT1
  ....
#end if