我想要做下面的事情。我想为Makefile创建一个可变的参数列表。变量参数列表到一个Makefile
make VAR_ARG_LIST=src1,src2,src3,src4
我可以这样吗?如果可以,我如何从Makefile中的变量VAR_ARG_LIST中提取src1,src2或src3?
谢谢,
我想要做下面的事情。我想为Makefile创建一个可变的参数列表。变量参数列表到一个Makefile
make VAR_ARG_LIST=src1,src2,src3,src4
我可以这样吗?如果可以,我如何从Makefile中的变量VAR_ARG_LIST中提取src1,src2或src3?
谢谢,
您确实没有提供足够的解决方案信息。你为什么要提取这些值?你想用他们做什么?
但是,我可以回答你问的问题,并希望它是有用的。如果您使用GNU让你可以这样做:
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}
在命令行上它们) 210
并且它将关闭并从makefile
的其余规则中创建程序src1
,... src4
。
如果这不是大致的,那么你需要澄清你的问题。
或者,如果它是一个目标列表,你可以'make src1 src2 src3 src4'。 – Idelic 2012-04-02 18:04:12
其实我想根据变量参数列表来定义宏。例如,如果在VAR_ARG_LIST中找到“src1”,我想在makefile中定义开关#SRC1。如果不是SRC1没有定义。你的答案似乎足够接近我。让我尝试一下。如果我能够从VAR_ARG_LIST中提取逗号分隔的字符串,我可以实现它。 – user1293997 2012-04-01 18:40:44
我不太清楚在makefile中定义switch#SRC1是什么意思,但是如果你只是试图查看一个单词是否存在于逗号分隔的列表中,你可以使用'$(filter src1,$(filter src1,$ subst $(COMMA),$(VAR_ARG_LIST)))'如果它存在,它将是'src1',否则是空的。 – MadScientist 2012-04-02 04:26:21