1 前言

CMake可以使用CTest统一调用写好的单元测试程序,这样我们就不必拘泥于特定的一款单元测试工具。

下面以doctest为例进行说明。

2 步骤

假设目录结构为:

  • ut
    • aaa
      • testa.cpp
      • CMakeLists.txt
    • bbb
      • testb.cpp
      • CMakeLists.txt
    • CMakeLists.txt
  • CMakeLists.txt

2.1 设置根目录CMakeLists.txt

在根目录的CMakeLists.txt文件中,我们需要添加

enable_testing()
add_subdirectory(ut)

接下来我们需要在单元测试代码一级的CMakeLists.txt中(如ut/aaa/CMakeLists.txt)添加:

add_executable(ut_aaa testa.cpp)
add_test(aaa ut_aaa ut_aaa)
cd ${Project_Root_Path}
mkdir build
cd build
cmake ..
make -j
make test # 它会调用ctest命令,会自动执行所有add_test中注册的程序