gpt4 book ai didi

linux - 如何使用来自另一个文件的参数列表运行 Makefile

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:12 26 4
gpt4 key购买 nike

我正在使用 csh。在我的 makefile 中我有这样的东西:

run:
program -switch "--alpha 3 --beta 4 --gamma 5"

我的目标是在运行 makefile 时能够在 -switch 中设置参数。我找到了不同的解决方案,但在我的例子中,alpha、beta 和 gamma 类型的参数大约有 20-25 个。理想情况下,我想将它们放在这样的文件中:

file: simple_script_run

--alpha 3 \
--beta 5 \
--gamma 5 \
--..etc

为了更好的可读性,我宁愿将参数放在不同的行中。文件 simple_script_run 与其他类似文件位于一个目录 run_scripts 中,每个文件都包含参数的配置。后者与我的 makefile 位于同一路径中。目的是能够将 makefile 中的参数列表替换为类似以下内容:

program -switch "$(RUN_ARGS)"

参数列表必须包含在“”中。现在我想使用类似于以下的命令运行 makefile:

make run RUN_ARGS=$(< run_scripts/simple_script_run)

显然,这不起作用,我想知道为什么。你能建议修复我的解决方案或更好的主意吗?我很高兴收到你的来信。

最佳答案

这对我有用:

配置文件(不需要反斜杠):

--alpha 3
--beta 5
--gamma 5

我的程序:

#!/bin/bash
echo "arg1=$1"
echo "arg2=$2"

生成文件:

# define the newline as a multi-line variable
define \n


endef

# Convert newlines to spaces in $(ARGS)
MK_ARGS := $(subst ${\n}, , $(ARGS))
# MK_ARGS := $(shell echo "$(ARGS)") # A more expensive way

all:
@echo "MK_ARGS=$(MK_ARGS)"
@bash myprog -switch "$(MK_ARGS)"

make ARGS="$(< config)" 的运行结果:

MK_ARGS=--alpha 3 --beta  5 --gamma 5
1=-switch
2=--alpha 3 --beta 5 --gamma 5

关于linux - 如何使用来自另一个文件的参数列表运行 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254342/

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