1

在 Makefile 中,我想对通常的编译通用规则有一个变体

%.o: %.cpp
    $(CC) -c $(CC_FLAGS) $< -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 $@

即如何使make对集合A(例如some_obj_1.o)中的目标文件使用规则A,对集合B(例如another_obj_1.o)中的目标文件使用规则B?

4

1 回答 1

2

使用静态模式规则

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
    ...
于 2013-06-04T09:34:00.887 回答