【问题标题】:Use script output in Makefile, to be used in sed cmd and variable update [duplicate]在 Makefile 中使用脚本输出,用于 ​​sed cmd 和变量更新 [重复]
【发布时间】:2023-02-23 03:06:18
【问题描述】:

我想在给定范围内生成一个随机值,并使用结果来更新 Makevariable 以及修改文件。

我尝试使用下面的代码,我确实看到了生成的随机值。但我无法在 sed/Make 变量中使用它。

生成文件::

ALL_CPU_IRQ = 1

all:
ifeq ($(ALL_CPU_IRQ),1)
        RANDINT=$(shell python -c 'from random import randint; print(randint(1,3));')
        @echo $(RANDINT)
override BLOCK_RUN_OPT  +=  +init_cpu=$(RANDINT)
        sed -i 's|asm_comp_opt_tl=|\0INIT_CPU=$(RANDINT),|' $(CURDIR)/asm_opt.txt
        @echo $(BLOCK_RUN_OPT)
endif


我观察到的输出是:

RANDINT=2
+init_cpu=

和 asm_opt.txt:asm_comp_opt=INIT_CPU=,


预期输出:

RANDINT=2
+init_cpu=2

和 asm_opt.txt:asm_comp_opt=INIT_CPU=2,


我是 Makefile 的新手。任何的意见都将会有帮助。如果这是一个多余的问题,我们深表歉意。

【问题讨论】:

  • 什么是预期的输出?您最终期望 Makefile 中的输出是什么?你能帮我们吗?
  • 抱歉,我在主线程中错过了它。预期输出:BLOCK_RUN_OPT = +init_cpu=2 和 asm_opt.txt :: asm_comp_opt=INIT_CPU=2,
  • 等等,那是脚本中的代码吗?我看不出它如何像在 makefile 中那样发挥作用,无论它是否符合规则。
  • @Beta :它是 Makefile 规则的一部分。我已经用完整的 Makefile 示例更新了主线程
  • 如果那是您的完整 makefile,那么 BLOCK_RUN_OPT 是做什么用的?

标签: shell makefile gnu-make


【解决方案1】:

尝试以下:

RANDINT=$(shell python -c 'from random import randint; print(randint(1,3));')
@echo $(RANDINT)
    override BLOCK_RUN_OPT  +=  +init_cpu=$(RANDINT)
@echo $(BLOCK_RUN_OPT)
sed -i 's|asm_comp_opt_=|
猜你喜欢
  • 2017-03-21
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 2019-05-18
  • 2018-01-24
  • 1970-01-01
  • 2012-07-05
相关资源
最近更新 更多