将变量参数列表添加到Makefile
我想做一些如下的事情。我想要一个Makefile的变量参数列表将变量参数列表添加到Makefile,makefile,gnu-make,Makefile,Gnu Make,我想做一些如下的事情。我想要一个Makefile的变量参数列表 make VAR_ARG_LIST=src1,src2,src3,src4 我可以这样做吗?如果可以,如何从Makefile中的变量VAR_ARG_列表中提取src1、src2或src3 谢谢,您确实没有为解决方案提供足够的信息。为什么要提取这些值?你想用它们做什么 不过,我可以回答你提出的问题,希望它有用。如果您正在使用GNU make,则可以执行以下操作: COMMA := , VAR_ARG_LIST_A := $(subs
make VAR_ARG_LIST=src1,src2,src3,src4
我可以这样做吗?如果可以,如何从Makefile中的变量VAR_ARG_列表中提取src1、src2或src3
谢谢,您确实没有为解决方案提供足够的信息。为什么要提取这些值?你想用它们做什么 不过,我可以回答你提出的问题,希望它有用。如果您正在使用GNU make,则可以执行以下操作:
COMMA := ,
VAR_ARG_LIST_A := $(subst $(COMMA), ,$(VAR_ARG_LIST))
VAR_ARG_LIST_1 := $(word 1,$(VAR_ARG_LIST_A))
VAR_ARG_LIST_2 := $(word 2,$(VAR_ARG_LIST_A))
等等。如果您希望宏中的目标列表供
make
使用,请在命令行中使用空格分隔它们(并用引号括起来):
make VAR_ARG_LIST="src1 src2 src3 src4"
这可以在makefile
中使用,无需太多麻烦:
PROGRAMS = ${VAR_ARG_LIST}
all: ${PROGRAMS}
它将启动并创建程序src1
src4
来自makefile
中的其余规则
如果这不是您想要的,那么您需要澄清您的问题。实际上,我想根据变量参数列表定义宏。例如,如果在VAR#u ARG#u列表中找到“src1”,我想在makefile中定义开关#src1。如果不是,则未定义SRC1。你的回答对我来说似乎很接近。让我试试。如果我能够从VAR#u ARG_列表中提取逗号分隔的字符串,我就可以实现它。我不太知道
在makefile
中定义开关#SRC1意味着什么,但是如果你只是想看看逗号分隔列表中是否存在一个单词,你可以使用$(filter SRC1,$(subst$(comma),$(VAR#ARG LIST)))
如果存在则为src1
,如果不存在则为空。或者,如果是目标列表,则可以使src1 src2 src3 src4
。