我想要做下面的事情。我想爲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