Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake:在不同目录中添加依赖项为的自定义命令_Cmake - Fatal编程技术网

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_子目录一起添加?