gpt4 book ai didi

gnu-make - makefile 中的全局变量

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

我正在尝试为每个通过 make 和 sub make 编译的文件分配一个唯一编号。为此,我使用 export varName = 1 在顶级 make 中导出变量,然后对于使用以下编译的每个 .c 文件,该变量都会递增

$(eval varName=$(shell echo $$(($(varName)+1))))

问题是当从顶级 makefile 调用子 make 文件时,varName 再次初始化为 1

如何在调用子 makefile 时保留最后更新的值?

最佳答案

导出一个变量只是提供了一个副本,sub-make 使用它来初始化它自己的单独的变量表。因此,这将不允许回写值更改。

要创建真正的全局变量,您可以调用外部程序或脚本来递增保存在文件或数据库表中的计数器。但是,如果您的 make 子流程是同时启动的而不是顺序启动的,这可能会导致麻烦。这将导致并行访问,从而可能导致不可复制的编号序列。

有一些objections in general反对使用子品牌。为每次编译创建一个额外的外部进程也会延长您的制作时间。

关于gnu-make - makefile 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37835604/

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