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

Are test sources handled differently by CMake?

我正在使用 CMake 构建一个应用程序,它以文本模式和 GUI 模式 (Qt5) 生成库和可执行文件,并进行单元测试。 我有经验,如果我修改除测试源之外的任何内容,并且想要 运行,CMake 将首先构建新的可执行文件。如果我修改任何测试源, CM 立即 运行s 旧的可执行文件,所以我需要在 运行 之前显式编译新的测试程序。测试在单独的子目录中,结构与其他组件的结构相似,源由

定义
set(MY_SRCS list of individual sources)

知道吗,是什么导致了这种差异? (虽然这是一个细微差别)。

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

您可以通过添加自定义目标(例如 make check)来解决此问题,该目标首先构建您的测试然后执行它们:CMake & CTest : make test doesn't build tests.

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