Makefile:基于集合的规则选择

Makefile:基于集合的规则选择,makefile,rule,Makefile,Rule,在Makefile中,我希望有一个用于编译的常规通用规则的变体 %.o: %.cpp $(CC) -c $(CC_FLAGS) $< -o $@ %.o:%.cpp $(CC)-c$(CC_标志)$

在Makefile中,我希望有一个用于编译的常规通用规则的变体

%.o: %.cpp
    $(CC) -c $(CC_FLAGS) $< -o $@
%.o:%.cpp
$(CC)-c$(CC_标志)$<-o$@
但我想根据目标公司在两个不同集合中的成员资格区分两个规则:

# Rule A - use if target object in the set (some_obj_1.o, some_obj_2.o)
%.o: %.cpp
    $(COMPILER_A) -c $(CC_FLAGS_A) $< -o $@

# Rule B - use if target object in the other set (another_obj_1.o, another_obj_2.o)
%.o: %.cpp
    $(COMPILER_B) -c $(CC_FLAGS_B) $< -o $@
#规则A-如果集合中的目标对象(一些对象为1.o,一些对象为2.o)使用
%.o:%.cpp
$(编译器\u A)-c$(CC\u标志\u A)$<-o$@
#规则B-如果目标对象在另一个集合中(另一个对象1.o,另一个对象2.o),则使用
%.o:%.cpp
$(编译器\u B)-c$(CC\u标志\u B)$<-o$@
例如,如何使make对集合A中的目标文件使用规则A(例如
某些对象1.o
),对集合B中的目标文件使用规则B(例如
另一个对象1.o
)?

使用:

SET_A := some_obj_1.o some_obj_2.o
SET_B := another_obj_1.o another_obj_2.o

$(SET_A): %.o : %.cpp
    ...

$(SET_B): %.o : %.cpp
    ...