我有一个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)
答案 0 :(得分:2)
让这并不擅长这种操作,但你可以将逗号分隔的列表分成如下空格分隔的列表:
COMMA = ,
TYPE_LIST = $(subst $(COMMA), ,$(TYPE))
然后你可以像这样应用你的通配符逻辑:
FILE_LIST = $(patsubst %,test/%Test.cpp,$(TYPE_LIST))
TEST_SRCS := $(wildcard $(FILE_LIST))