使用 cmake 构建项目后如何运行 ctest

2024-04-21

我希望每次成功构建项目时都启动测试。如果某些测试被破坏,我希望我的构建也被破坏。默认情况下,我需要通过运行来手动运行测试ctest命令。 CTest 实际上可以构建项目,但我使用调用的 IDEmake建立资源。和make不运行测试。

我将此命令添加到我的根 CMakeLists.txt 文件中,但它不起作用。

add_custom_command(OUTPUT tests.txt 
                   POST_BUILD
                   COMMAND ctest --output-on-failure)

CMake 不会返回任何错误,一切都构建良好,但我的自定义命令不会调用。在 CMake 中每次成功构建后如何运行某些内容?

Update:

我的最终解决方案是创建这个宏:

macro(add_unit_test target target_test)
    set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${target_test} PARENT_SCOPE)
    add_test(target ${CMAKE_CURRENT_BINARY_DIR}/${target_test})
endmacro(add_unit_test)

它调用add_test并记住列表中的测试目标。此宏添加的项目中的每个测试。在根 CMakeLists.txt 中,我有以下代码:

add_custom_target( all_tests ALL
                   DEPENDS ${UNIT_TEST_TARGETS}
)
add_custom_command(TARGET all_tests
                   COMMENT "Run tests"
                   POST_BUILD COMMAND ctest ARGS --output-on-failure
                   WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

它创建依赖于项目中所有单元测试的自定义目标。自定义命令在之后运行all_tests目标已建立。


这种形式的add_custom_command http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command%3aadd_custom_command仅当另一个 CMake 目标依赖于“tests.txt”时才会执行。我假设没有其他目标将“tests.txt”作为输入文件,因此自定义命令永远不会运行。

我认为你可以使用第二种形式add_custom_command实现你的目标;就像是:

add_custom_command(TARGET MainTest
                   POST_BUILD
                   COMMAND ctest -C $<CONFIGURATION> --output-on-failure)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 cmake 构建项目后如何运行 ctest 的相关文章

随机推荐

  • 将 TypeScript 类型打印到控制台/文件中

    我有多种类型 形成了当前在我的服务器上使用的更大 复杂的类型 是否可以将更大 复杂的类型打印到控制台 文件中 Example type TypeA prop1 string prop2 number type TypeB Omit
  • 是否有一个在线工具可以像 JSON 一样自动缩进和格式化 Clojure 代码?

    有很多在线工具可以获取 JSON 文本 并向您显示该文本的格式化和缩进格式 有些甚至更进一步 形成了一个漂亮的树状结构 http jsonviewer stack hu http jsonviewer stack hu 我们有类似的 Clo
  • 无法访问org.springframework.core.env.EnvironmentCapable

    我正在尝试使用它在 Web 应用程序中获取 spring bean WebApplicationContext wac WebApplicationContextUtils getRequiredWebApplicationContext
  • Groovy 中没有参数的模拟静态方法

    我需要模拟一个静态方法 我正在使用 EMC 方法 描述于使用 groovy 模拟静态方法 http groovy codehaus org Mocking Static Methods using Groovy 像这样 TestDaemon
  • OCR 扑克牌 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我决定做一个有趣的项目 我想将扑克牌的图像作为输入并返回其等级和花色 我认为我只需要查看左上角 因为那里包含了所有信息 它应该是稳健的
  • python中的递归图

    我正在尝试按照我的要求对时间序列中的模式进行聚类 如何用python对音节类型进行聚类 https stackoverflow com questions 33393388 how to clustering syllable types
  • linux脚本杀死java进程

    我想要linux脚本来杀死在控制台上运行的java程序 以下是作为 jar 运行的进程 rapp s1 dlap0 ps ef grep java rapp 9473 1 0 15 03 pts 1 00 00 15 java jar ws
  • Ruby on Rails:如何将占位符文本添加到 f.text_field?

    我怎样才能添加placeholder发短信给我的f text field字段 以便默认情况下预先编写文本 并且当用户在字段内单击时 文本会消失 允许用户输入新文本 对于 Rails gt 3 0 您可以简单地使用placeholder op
  • .gitignore 和 Visual Studio 项目:忽略 bin/Debug 目录,但不忽略 bin/Release 目录

    我在 git 存储库中有一个 C Visual Studio 项目 我想忽略内容bin Debug目录 但不是目录的内容bin Release 目录 我已经添加bin Debug to my gitignore文件 但它似乎不起作用 它包括
  • 谷歌浏览器缓存

    我有一个嵌入 flash flex 应用程序的 html 页面 我有以下标题 此外 每次发布应用程序的新版本时 我都会更改文件名 因此 它变得类似于 MyApp v1 swf 然后更新为 MyApp v2 swf 尽管如此 chrome仍然
  • 使用当前 HTTP 请求身份作为 SharpSVN 的默认凭据

    我正在尝试通过 Web 应用程序调用 SharpSVN 中的 RemoteCreateDirectories 并希望凭据是已登录用户的凭据 这可以隐式完成还是需要用户名和密码 如下例所示 using var svnClient new Sv
  • MySQL 中可以将一个别名除以另一个别名吗?

    我有一个多表查询 与此类似 简化版 SELECT columns count table2 rev id As rev count sum table2 rev rating As sum rev rating FROM table1 LE
  • D3.js 如何将我的真实数据合并到饼图中

    我是 D3 和数据可视化的新手 在加载真实数据时遇到一些问题 您将在以下部分中找到我的代码 现在我有一些数据存储在数组中 现在我想做的是将数据库中的实际数据存储到饼图中 另外 如果我这样做 var mydata d3 json mydata
  • 如何在Anaconda Python(Windows平台)中安装xgboost?

    我是一个 Python 新用户 我从以下链接下载了最新的 Anaconda 3 2 4 1 Python 3 5 https www continuum io downloads https www continuum io downloa
  • MySQL选择结果保存到C#变量中

    你能检查我的代码并回答我如何将 mysql 选择结果保存到 C 字符串中吗 try MySqlDataReader reader null string selectCmd SELECT FROM TabelaUtilizatori MyS
  • ReactiveCommand 传递命令参数

    我想用命令来实现文本框中的KeyDown事件 我想让命令能够识别哪个键输入 例如 KeyEventArgs 在 KeyDown Event 中执行操作并执行其他一些操作 所以我想将命令参数传递给ReactiveCommand 就像Event
  • Python selenium:DevTools 监听 ws://127.0.0.1

    今天 当我使用 chromedriver 运行 selenium 时 我在控制台上收到此消息 我该如何抑制这种情况 DevTools listening on ws 127 0 0 1 12740 devtools browser 9710
  • 更改 Integration Services 项目中的 .NET Framework

    在 Visual Studio 2013 中创建新的 Integration Services 项目时 我可以选择要定位的 NET 框架 如何查看现有项目所针对的 NET 框架并可能对其进行更改 您需要打开脚本任务之一并单击 编辑脚本 按钮
  • 如何在 R 中按下传单弹出窗口时创建事件?

    当我单击传单多边形时 我想让 tabPanel 变为闪亮 我对如何做到这一点有一些想法 但我找不到实现它们所需的信息 我在选项卡面板中有传单 但我想在单击多边形时切换到另一个选项卡 leaflet llmap gt addTiles gt
  • 使用 cmake 构建项目后如何运行 ctest

    我希望每次成功构建项目时都启动测试 如果某些测试被破坏 我希望我的构建也被破坏 默认情况下 我需要通过运行来手动运行测试ctest命令 CTest 实际上可以构建项目 但我使用调用的 IDEmake建立资源 和make不运行测试 我将此命令