相关疑难解决方法(0)

CMake&CTest:make test不构建测试

我在CMake中尝试CTest,以便使用make testtarget 自动运行我的一些测试.问题是CMake没有"理解"我愿意运行的测试必须构建,因为它是项目的一部分.

所以我正在寻找一种明确指定这种依赖关系的方法.

dependencies cmake ctest

83
推荐指数
6
解决办法
4万
查看次数

如何使我的 cmake 目标用于 catch2 测试和项目运行更具可扩展性和合理性?

经过大量的努力和研究,我成功地创建了多个 cmake 目标,以将运行我的程序与运行代码测试分开。但我不喜欢我所做的,因为我看到CMakeList.txt文件中有冗余。

目前,我必须将每个新的源文件添加到两个目标,以便源目标可以使用该文件进行构建,并且测试目标可以构建,因为它们需要测试该文件。我无法将整个源目标放入测试目标中,因为这样测试目标将包含两个主文件。

我对如何修复冗余的唯一想法是将源目标中没有文件的所有文件main.cpp放入某个组中,然后将该组附加到两个目标。这样,源目标仅包含main.cpp文件和源文件组,测试目标包含其所有测试和源文件组。因此文件组基本上是两个目标之间的所有重叠部分。我只是不知道该怎么做。

研究

以下是我发现的其他堆栈溢出问题,这些问题帮助我到达了现在的位置:

代码

这是我为试验 catch2 和 cmake 而制作的测试项目,目前适用于构建目标“tests”和“catch2Test”:

/catch2Test      // <-- project folder
  |---- /include
  |       |---- /catch2
  |               |---- catch.hpp
  |---- /src
  |       |---- /myMath
  |       |       |---- factorial.cpp
  |       |       |---- factorial.h
  |       |---- main.cpp
  |       |---- CMakeLists.txt
  |---- /test
  |       |---- test_main.cpp
  |       |---- test_factorial.cpp
  |       |---- CMakeLists.txt
  |---- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

/include/catch2/catch.hpp是catch2的库头文件

/src/myMath/包含阶乘实现的头文件和代码文件,与catch2 教程中使用的相同。这也是阶乘测试的实现的来源。

/src/main.cpp …

c++ unit-testing cmake catch-unit-test

8
推荐指数
1
解决办法
4101
查看次数

标签 统计

cmake ×2

c++ ×1

catch-unit-test ×1

ctest ×1

dependencies ×1

unit-testing ×1