我正在使用CMake构建一个应用程序,它以文本模式和GUI模式(Qt5)生成库和可执行文件,然后进行单元测试。 我有经验,如果我修改任何测试源,并且想要运行,CMake将构建第一个新的可执行文件。如果我修改任何测试源, CMakes立即运行旧的可执行文件,因此我需要在运行它之前显式编译新的测试程序。测试在一个单独的子目录中,结构类似于其他组件的结构,源由一个
定义set(MY_SRCS list of individual sources)
任何想法,可能导致这种差异的原因是什么? (虽然这是一个细微差别)。
答案 0 :(得分:2)
CTest生成的make test
目标只执行您使用add_test()
添加的测试,但不构建它们。由于它不构建它们,它也不会检查源文件中的更改。
您可以通过添加首先构建测试然后执行测试的自定义目标(例如make check
)来解决此问题:CMake & CTest : make test doesn't build tests。
不确定这是否回答了问题,因为您没有指定如何创建和执行单元测试。