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 对测试源的处理方式不同吗?的主要内容,如果未能解决你的问题,请参考以下文章

对每个目标使用不同的测试/训练拆分

使用 cmake 和 mingw-w64 错误编译测试程序

可以在gradle中为每个ABI设置cmake参数吗?

PayPal PHP API,信用卡和借记卡的处理方式相同吗?

使用自定义 cmake 版本变量测试包版本集

我可以阻止 GoogleTest-build 修改全局 CMAKE_CXX_FLAGS 变量吗?