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

时间:2016-03-11 09:10:28

标签: c++ cmake googletest

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

定义
set(MY_SRCS list of individual sources)

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

1 个答案:

答案 0 :(得分:2)

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

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

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