我在CMake中尝试CTest,以便使用make testtarget 自动运行我的一些测试.问题是CMake没有"理解"我愿意运行的测试必须构建,因为它是项目的一部分.
所以我正在寻找一种明确指定这种依赖关系的方法.
经过大量的努力和研究,我成功地创建了多个 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 …