gpt4 book ai didi

build - 如何在构建时在介子中运行自定义命令?

转载 作者:行者123 更新时间:2023-12-04 14:09:40 25 4
gpt4 key购买 nike

在我的项目中,我采用了遵循 semver 描述的标准的语义版本控制方案。 .我得到了这样的东西:product_v1.2.3-alpha-dirty.elf。

我使用嵌入式系统和 make 我通常在编译时生成一个 version_autogen.h 文件,其中包含版本号的信息,例如 1.4.3.1 和当前的 git 存储库,例如 --dirty、--clean 和依此类推,使用 shell 命令。

我开始使用介子,它非常简单灵活,但自定义命令如

run_command('command', 'arg1', 'arg2', 'arg3')

仅在配置时可用,而我在编译时需要它们来检索 git status 等信息。

我该怎么做?

最佳答案

经过更深入的研究,我发现 custom_target()(如 nielsdg 所建议的那样)可以完成我的工作。我做了这样的事情:

# versioning
version_autogen_h = custom_target(
'version_autogen.h',
output : 'version_autogen.h',
input : 'version_creator.sh',
command : ['@INPUT@', '0', '0', '1', 'alpha.1', '@OUTPUT@' ],
)

version_creator.sh 是我的 bash 脚本,它检索 git 信息并根据作为命令参数传递的版本号创建文件 version_autogen.h。自定义目标是在编译时创建的,因此我的脚本也在编译时执行,恰好在我希望的时候执行。

我还发现,在介子中有可能使用生成器来做类似的事情,但在那种情况下,它们转换一个输入文件为一个或多个输出文件,所以它们不适合我不需要文件作为输入而只需要版本号的情况。

关于build - 如何在构建时在介子中运行自定义命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65390930/

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