CMake 是否以不同的方式处理测试源

Are test sources handled differently by CMake?

本文关键字:方式 处理 测试 是否 CMake      更新时间:2023-10-16

我正在使用CMake构建一个应用程序,该应用程序在文本模式和GUI模式(Qt5)以及课程单元测试中生成库和可执行文件。我有经验,如果我修改除测试源之外的任何内容,并且想要运行,CMake 会构建第一个新的可执行文件。如果我修改任何测试源,CMakes 会立即运行旧的可执行文件,因此我需要在运行它之前显式编译新的测试器。测试位于单独的子目录中,结构类似于其他组件的结构,源由

set(MY_SRCS list of individual sources)

任何想法,什么会导致这种差异?(虽然这是一个细微差别)。

CTest 生成的make test目标仅执行您使用 add_test() 添加的测试,它不会构建它们。由于它不构建它们,因此它也不会检查源文件中的更改。

您可以通过添加自定义目标(例如 make check ) 首先构建测试,然后执行它们:CMake & CTest:make test 不构建测试。

不确定这是否回答了问题,因为您没有指定如何创建和执行单元测试。