我正在尝试生成依赖于一组文件的文件 在不同的调用中进行更改。
为了更好地理解它,让我们向您展示代码:
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")
所以,我想用generated.c
生成文件generate
命令,这些文件需要在文件时重新生成
由generated-dependencies-list
命令更改指定。你可以
注意,generated-dependencies-list
可以生成不同的一组
文件在整个调用过程中都是不可行的
generated-dependencies-list
在配置时的结果
将结果传递给add_custom_command
。
实际上上面的代码有点起作用,但它看起来像是一个黑客 只适用于Makefile后端,make规则也看起来不行 正如我所期待的那样,毕竟,它是一个黑客攻击:
generated.c: ../$(shell\ generate-dependencies-list)
基本上,我希望这个规则或其他东西得到相同的结果:
generated.c: $(shell generate-dependencies-list)
CMake有任何功能可以达到这个目的吗?
答案 0 :(得分:1)
当generated-dependencies-list命令指定的文件发生更改时
如果命令generated-dependencies-list
的输出仅依赖于此脚本和脚本的参数,那么您只需将此脚本添加到DEPENDS
子选项:
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"
)