Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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,我正在尝试生成依赖于一组文件的文件,这些文件可以 在不同的make调用中进行更改 为了更好地理解它,让我们向您展示以下代码: cmake_minimum_required(VERSION 2.8) project(demo-one C) add_custom_command( OUTPUT "${CMAKE_BINARY_DIR}/generated.c" COMMAND generate -o "${CMAKE_BINARY_DIR}/gen

我正在尝试生成依赖于一组文件的文件,这些文件可以 在不同的make调用中进行更改

为了更好地理解它,让我们向您展示以下代码:

cmake_minimum_required(VERSION 2.8)

project(demo-one C)

add_custom_command(
    OUTPUT
        "${CMAKE_BINARY_DIR}/generated.c"
    COMMAND
        generate -o "${CMAKE_BINARY_DIR}/generated.c"
    DEPENDS
        "$(shell generate-dependencies-list)"
    COMMENT
        "Generating generated.c"
)

add_executable(main main.c "${CMAKE_BINARY_DIR}/generated.c")
因此,我想用
generate
命令,该文件需要在 由
生成的依赖项列表指定
命令更改。随你怎么说 注意,
生成的依赖项列表
可以生成不同的 文件始终进行调用,因此无法获取 配置时生成的依赖项列表的结果 将结果传递到
add\u custom\u命令

实际上,上面的代码有点有效,但它看起来像是一个黑客攻击 将只适用于Makefile后端,而且make规则看起来不适用 正如我所期待的,毕竟,这是一个黑客:

generated.c: ../$(shell\ generate-dependencies-list)
基本上,我希望这个规则或其他东西得到相同的结果:

generated.c: $(shell generate-dependencies-list)
CMake有任何功能可以实现这一点吗

当生成的依赖项列表命令指定的文件发生更改时

如果命令
生成的依赖项列表的输出仅依赖于此脚本和脚本的参数,则您可以将此脚本添加到
依赖项
子选项:

add_custom_command(
    OUTPUT
        "${CMAKE_BINARY_DIR}/generated.c"
    COMMAND
        "${CMAKE_CURRENT_LIST_DIR}/generate-dependencies-list"
    COMMAND
        generate -o "${CMAKE_BINARY_DIR}/generated.c"
    DEPENDS
        "${CMAKE_CURRENT_LIST_DIR}/generate-dependencies-list"
    COMMENT
        "Generating generated.c"
)

隐马尔可夫模型。。。我想你不明白。generate dependencies list是一个将依赖项输出到build generated.c的命令,此输出可以在整个make调用过程中更改(例如,通过添加新文件),请注意,这些依赖项用于生成generated.c,但它们不必是构建系统的一部分(不必安装)@eagleoneraptor
生成依赖项列表是一个输出依赖项的命令
,如果命令的输出可能会不时更改,而脚本或脚本的参数没有更改,则您无法执行此操作(至少以最佳方式)。这正是不推荐的原因。在这种情况下,您需要在每次构建(即每个make)时运行此命令,即使没有任何更改。