2013-06-04 36 views
1

,在Makefile中,我想對編譯的Makefile:基於集合的規則選擇

%.o: %.cpp 
    $(CC) -c $(CC_FLAGS) $< -o [email protected] 

通常的通用規則的變化,但我想基礎上的成員兩個規則來區分在兩套不同的目標中:

# 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 [email protected] 

# 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 [email protected] 

iee如何使集合A中的目標文件(例如some_obj_1.o)和集合B中的目標文件(例如another_obj_1.o)中的目標文件使用規則A?

回答

2

使用static pattern rules

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 
    ...