cmake:在不同目录中添加依赖项为的自定义命令
还有一个添加自定义命令问题: 我有一个项目,其中一个自定义命令的输出用作另一个命令的输入,但位于不同的目录中。例如: 目录cmake:在不同目录中添加依赖项为的自定义命令,cmake,Cmake,还有一个添加自定义命令问题: 我有一个项目,其中一个自定义命令的输出用作另一个命令的输入,但位于不同的目录中。例如: 目录lib/CMakeLists.txt包含: add_custom_command( OUTPUT libfoo.xx COMMAND <command to build libfoo.xx> ) add_custom_target(libfoo DEPENDS libfoo.xx) add_custom_command(OUTPUT test.y
lib/CMakeLists.txt
包含:
add_custom_command(
OUTPUT libfoo.xx
COMMAND <command to build libfoo.xx>
)
add_custom_target(libfoo DEPENDS libfoo.xx)
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.
另一方面,如果我试图通过说依赖libfoo
来创建目标级别的依赖关系,那么错误将变为:
No rule to make target 'libfoo', needed by 'test/test.yy'. Stop.
因此,文件级或目标级依赖项在这里似乎都不起作用。有没有办法将一个自定义命令的输出作为另一个自定义命令在不同目录中的输入?您可以尝试在
test/CMakLists.txt
中添加
add_custom_target(test DEPENDS test.yy)
然后再加上
add_dependencies(test libfoo)
在顶级的CMakeLists.txt
中
免责声明:我没有测试它,我是一个CMake初学者。告诉我们它是否有效 是否存在最外层的CMakeLists.txt文件,该文件将lib和test目录与add_子目录一起添加?