【发布时间】:2019-04-09 03:53:21
【问题描述】:
我正在尝试编写一个 makefile 来选择性地包含某个文件。
我已经设法让它与以下内容一起工作:
OBJS := $(filter-out ./build/./src/class_1.cpp.o, $(OBJS))
OBJS := $(filter-out ./build/./src/class_2.cpp.o, $(OBJS))
OBJS_1 :=./build/./src/class_1.cpp.o $(OBJS)
OBJS_2 := ./build/./src/class_2.cpp.o $(OBJS)
但我想让它更通用并使用通配符。
我的理解是以下应该有效:
OBJS := $(filter-out $(wildcard ./build/./src/*), $(OBJS))
我也试过
OBJS := $(filter-out $(wildcard \./build/\./src/*), $(OBJS))
但不确定问题出在特殊符号上还是只是基本理解。
然后它抱怨主函数太多(1 类和 2 类)。
我对make中的通配符和过滤器的理解有什么遗漏吗?
如果我用两种不同的方法打印出 $(OBJS) 的值,这些值是相同的,所以我不确定为什么一个解决方案可以工作而另一个解决方案失败。
但是,由于某种原因,OBJS_1 似乎没有得到应用于$(OBJS) 的过滤器
【问题讨论】: