#all object file OBJS = $(foreach obj, $(CPPFILES), $(OBJS_DIR)$(basename $(obj)).$(OBJS_SUFFIX)) OBJS += $(foreach obj, $(CFILES), $(OBJS_DIR)$(basename $(obj)).$(OBJS_SUFFIX)) #dependency DEPS = $(OBJS:.$(OBJS_SUFFIX)=.$(DEPS_SUFFIX)) #rules all : begin_log $(FIRST_TARGET_NAME) end_log #output log begin_log : @echo "######################################################### begin compile "$(OUTPUT_NAME)$(OUTPUT_SUFFIX) end_log : @echo "######################################################### end compile "$(OUTPUT_NAME)$(OUTPUT_SUFFIX) $(FIRST_TARGET_NAME) : make_temp_path $(OBJS) link sinclude $(DEPS) make_temp_path: for obj in $(foreach obj, $(OBJS), $(dir $(obj))); do \ # echo $$obj; \ mkdir --parents $$obj; \ done link: @echo "********************************************************* link begin..." $(LINK_TYPE) $(OUTPUT_DIR)$(OUTPUT_NAME)$(OUTPUT_SUFFIX) \ $(OBJS) \ $(IMPORT_LIB) @echo "********************************************************* link ended." clean: rm -f $(OBJS) \ $(DEPS) \ $(OUTPUT_DIR)$(OUTPUT_NAME)$(OUTPUT_SUFFIX)