【发布时间】: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