【问题标题】:Defining dependency between custom commands in different directories定义不同目录中自定义命令之间的依赖关系
【发布时间】:2011-04-30 16:23:33
【问题描述】:

我有一个项目,其中一个自定义命令的输出用作另一个自定义命令的输入,但位于不同的目录中。比如:

目录lib/CMakeLists.txt 包含:

add_custom_command(
    OUTPUT libfoo.xx
    COMMAND <command to build libfoo.xx>
)
add_custom_target(libfoo DEPENDS libfoo.xx)

目录test/CMakeLists.txt 包含:

add_custom_command(OUTPUT test.yy
   COMMAND <command to build test.yy>
   DEPENDS "${PROJECT_BINARY_DIR}/lib/libfoo.xx"
)

所以我需要确保 libfoo 在 test.yy 之前构建。文档说 add_custom_command() 的 DEPENDS 子句只能具有文件级依赖项。让我们试试看会发生什么:

No rule to make target 'lib/libfoo.xx', needed by 'test/test.yy'.  Stop.

另一方面,如果我尝试通过说DEPENDS libfoo 来创建目标级别的依赖项,那么错误将变为:

No rule to make target 'libfoo', needed by 'test/test.yy'.  Stop.

因此,似乎文件级或目标级依赖项在这里都不起作用。有没有办法让一个自定义命令的输出成为另一个自定义命令的输入,在不同的目录中?

【问题讨论】:

  • 是否有一个最外层的 CMakeLists.txt 文件使用 add_subdirectory 添加 lib 和 test 目录?

标签: cmake cmake-custom-command


【解决方案1】:

你可以试试test/CMakLists.txt添加

add_custom_target(test DEPENDS test.yy)

然后添加

add_dependencies(test libfoo)

在您的顶级CMakeLists.txt

免责声明:我没有测试它,我是 CMake 初学者。告诉我们它是否有效!

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多