Makefile根据两组对象指定不同的编译标志

Makefile specify different compilation flags based on two groups of objects

在我的 makefile 中,我编译的文件如下所示:

a_SRCS = $(shell find $(DIR1) -name '*.c') 
b_SRCS = $(shell find $(DIR2) -name '*.c')

a_OBJS = $(patsubst $(SRC)/%.c,$(OBJ)/%.o,$(a_SRCS))
b_OBJS = $(patsubst $(SRC)/%.c,$(OBJ)/%.o,$(b_SRCS))

$(BIN): $(a_OBJS) $(b_OBJS)
$(CC) $^ -o $@ $(LIBS) 

$(OBJ)/%.o: $(SRC)/%.c
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@ 

我想根据当前要生成的对象 $(OBJ)/%.o 属于 $a_OBJS 还是 $b_OBJS 来指定不同的编译标志。像下面这样的东西。可以吗?

#for a_OBJS
$(OBJ)/%.o: $(SRC)/%.c
$(CC) $(INCLUDES) $(a_CFLAGS) -c $< -o $@ 

#for b_OBJS
$(OBJ)/%.o: $(SRC)/%.c
$(CC) $(INCLUDES) $(b_CFLAGS) -c $< -o $@

您可以使用 target-specific variables:

$(a_OBJS) : EXTRA_FLAGS = -DA_OBJ

$(b_OBJS) : EXTRA_FLAGS = -DB_OBJ

$(OBJ)/%.o: $(SRC)/%.c
        $(CC) $(INCLUDES) $(EXTRA_FLAGS) -c $< -o $@