如何解析传递给make文件的参数值

时间:2013-12-27 10:31:34

标签: makefile gnu-make

我有一个makefile,它接受一个TYPE参数并使用该名称运行一个测试文件。否则它需要所有测试文件。

ifneq (,$(TYPE))
TEST_SRCS := $(wildcard test/$(TYPE)Test.cpp)
else
TEST_SRCS := $(wildcard test/*Test.cpp)
endif

print:
    echo $(TEST_SRCS)

这很好用如果我执行like,

make TYPE=Add

但是现在我想给 TYPE 提供多个值以便它应该同时使用AddTest.cpp和SubtractTest.cpp
e.g。

make TYPE=Add,Subtract

我试过了$(foreach var,$(TYPE), TEST_FILES += var)

1 个答案:

答案 0 :(得分:2)

让这并不擅长这种操作,但你可以将逗号分隔的列表分成如下空格分隔的列表:

COMMA = ,
TYPE_LIST = $(subst $(COMMA), ,$(TYPE))

然后你可以像这样应用你的通配符逻辑:

FILE_LIST = $(patsubst %,test/%Test.cpp,$(TYPE_LIST))
TEST_SRCS := $(wildcard $(FILE_LIST))