gpt4 book ai didi

cmake - 动态生成的依赖

转载 作者:行者123 更新时间:2023-12-05 07:58:00 25 4
gpt4 key购买 nike

我正在尝试生成依赖于一组文件的文件,这些文件可以在不同的 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 生成文件 generated.c命令,此文件需要在文件时重新生成由 generated-dependencies-list 命令更改指定。如你所愿注意,generated-dependencies-list 可以生成不同的集合文件贯穿整个 make 调用,所以获取是不可行的generated-dependencies-list 在配置时的结果将结果传递给 add_custom_command

实际上上面的代码有些工作,但它看起来像一个 hack仅适用于 Makefile 后端,make 规则也不适用正如我所期待的那样,毕竟这是一个 hack:

generated.c: ../$(shell\ generate-dependencies-list)

基本上,我希望这个规则或其他东西得到相同的结果:

generated.c: $(shell generate-dependencies-list)

CMake 有什么功能可以实现这一点吗?

最佳答案

when the files specified by generated-dependencies-list command changes

如果命令 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"
)

关于cmake - 动态生成的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com