【问题标题】:How to add dependency in cmake targets如何在 cmake 目标中添加依赖项
【发布时间】:2011-12-25 19:03:59
【问题描述】:

我在 cmake 中定义了一个自定义目标。我现在想确保仅在执行 cmake 目标 test 时才构建此目标。我怎样才能做到这一点。

假设我有一个目标make coverage,它应该依赖于之前调用的目标make test,或者在执行之前调用make test

如何在 cmake 中定义这种行为?

这里我的代码没有按预期工作。我想实现 make coverage 取决于之前必须调用 make test。

    ADD_CUSTOM_TARGET(
        coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh
        DEPENDS test
    )  

【问题讨论】:

  • 什么是测试?一个 custom_command 还是 custom_target?
  • 奇怪。自定义目标总是过时的,所以如果你运行 make coverage 它应该先运行测试。

标签: cmake


【解决方案1】:

CMake FAQ 声明定义自定义目标的add_custom_command/add_custom_target 命令有一个 DEPENDS 参数。

编辑

这不适用于内置目标test,因为关注feature request

但您始终可以创建自定义目标 checkCMake FAQ 中建议的任何内容

【讨论】:

  • 我看到了这个,但不幸的是它对我不起作用。我添加了一些我在上面尝试过的代码。
  • 这里有可能对你有用的类似主题stackoverflow.com/questions/733475/…
  • 就像@DLRdave 写的那样,您不能以这种方式为测试设置目标依赖项。
【解决方案2】:

您不能添加“DEPENDS 测试”子句。 CMake 中的预定义/内置目标(all、install、package、test、clean)不能作为 CMakeLists.txt 文件中的实际目标使用。所以你不能表达对内置目标的依赖。

CMake 错误跟踪器中有一个针对此功能的未完成功能请求,但尚未实现。见http://public.kitware.com/Bug/view.php?id=8438

不过,您可以更改自定义目标的命令,使其首先调用“make test”,然后运行您的覆盖命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多