cmake:add_custom_command,具有依赖关系的不同目录

时间:2011-04-30 16:23:34

标签: cmake

另一个add_custom_command问题:

我有一个项目,其中一个自定义命令的输出用作另一个自定义命令的输入,但是在另一个目录中。例如:

目录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"
)

所以我需要确保在test.yy之前构建libfoo。文档说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.

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

1 个答案:

答案 0 :(得分:0)

您可以尝试test/CMakLists.txt添加

add_custom_target(test DEPENDS test.yy)

然后添加

add_dependencies(test libfoo)

位于您的顶级CMakeLists.txt

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