CMake 对测试源的处理方式不同吗?
Posted
技术标签:
【中文标题】CMake 对测试源的处理方式不同吗?【英文标题】:Are test sources handled differently by CMake? 【发布时间】:2016-03-11 09:10:28 【问题描述】:我正在使用 CMake 构建一个应用程序,它可以在文本模式和 GUI 模式 (Qt5) 下生成库和可执行文件,并进行课程单元测试。 我有经验,如果我修改测试源以外的任何内容,并且想要运行,CMake 会构建第一个新的可执行文件。如果我修改任何测试源, CMakes 会立即运行旧的可执行文件,因此我需要在运行新测试器之前显式编译它。测试位于单独的子目录中,结构与其他组件类似,源由
定义set(MY_SRCS list of individual sources)
任何想法,什么会导致这种差异? (虽然这是一个细微差别)。
【问题讨论】:
【参考方案1】:CTest 生成的make test
目标仅执行您使用add_test()
添加的测试,它不会构建它们。由于它不构建它们,因此它也不检查源文件中的更改。
您可以通过添加一个自定义目标(例如make check
)来解决此问题,该目标首先构建您的测试然后执行它们:CMake & CTest : make test doesn't build tests。
不确定这是否回答了问题,因为您没有指定如何创建和执行单元测试。
【讨论】:
我想你回答了我要找的东西。我只是使用 RUN_ALL_TESTS();以上是关于CMake 对测试源的处理方式不同吗?的主要内容,如果未能解决你的问题,请参考以下文章