Cmake 动态生成的依赖项
我正在尝试生成依赖于一组文件的文件,这些文件可以 在不同的make调用中进行更改 为了更好地理解它,让我们向您展示以下代码: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
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)时运行此命令,即使没有任何更改。