PRO_$(d) := $(addprefix $(OUT)/$(d)/, $(SRCPRO_$(d):.proto=.pb.cc)) GRPC_$(d) := $(addprefix $(OUT)/$(d)/, $(SRCPRO_$(d):.proto=.grpc.pb.cc)) OBJ_PRO_$(d) := $(PRO_$(d):.pb.cc=.pb.o) $(GRPC_$(d):.grpc.pb.cc=.grpc.pb.o) $(OUT)/$(d)/%.o: d:=$(d) $(OUT)/$(d)/%.o: MOD:=$(MOD) $(OBJ_PRO_$(d)): $(OUT)/$(d)/%.o: $(OUT)/$(d)/%.cc $(MKDIR) $(COMP) $(OUT)/$(d)/%.grpc.pb.cc: MOD:=$(MOD) $(OUT)/$(d)/%.grpc.pb.cc: d:=$(d) $(GRPC_$(d)): $(OUT)/$(d)/%.grpc.pb.cc: $(d)/%.proto $(MKDIR) $(GRPCCOMP) $(OUT)/$(d)/%.pb.cc: MOD:=$(MOD) $(OUT)/$(d)/%.pb.cc: d:=$(d) $(PRO_$(d)): $(OUT)/$(d)/%.pb.cc: $(d)/%.proto $(MKDIR) $(PROTCOMP) OBJ := $(OBJ) $(OBJ_PRO_$(d))