# Write by lx-gzjp-2011-7-19
#*********** setting**********************************************
CC :=gcc
OUTDIR := obj
OUTBINNAME := go
SRC_DIR := ./ 2416def/ bmp/ lcddriver/ disp/ zklib/ gps/ usb/ timer/ anet/ omc/
#*****************************************************************
LINK :=$(CC) -o
LINETHREAD := -lpthread -lm
CFLAG :=-c -O2 -o
SRC_SUFFIX := .c
OBJ_SUFFIX := .o
SRCS :=$(foreach n,$(SRC_DIR),$(wildcard $(n)*$(SRC_SUFFIX)))
OBJECTS := $(patsubst %$(SRC_SUFFIX),$(OUTDIR)/%$(OBJ_SUFFIX),$(notdir $(SRCS)))
all : $(OUTDIR) $(OUTDIR)/$(OUTBINNAME)
.PHONY : all
$(OUTDIR):
mkdir $@
$(OUTDIR)/$(OUTBINNAME):$(OBJECTS)
$(LINK) $@ $(OBJECTS) $(LINETHREAD)
@echo "Finished!"
@echo "Binfile is $(OUTDIR)/$(OUTBINNAME)!"
$(OUTDIR)/main.o:main.c
$(CC) $(CFLAG) $@ $<
$(OUTDIR)/%.o:$(SRCS)
$(CC) $(CFLAG) $@ $(*F)/$(*F).c
clean:
@rm -rf obj
@echo "$(OUTDIR) has been deleted!"
======================= Makefile 领悟 =========================================================
edit(最终目标) : main.o kbd.o command.o display.o insert.o search.o files.o utils.o (最终目标文件的依赖文件是中间文件)
cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o //由很多.o文件生成最终目标文件
main.o : main.c defs.h
cc -c main.c //没有.o,难道是隐晦规则中的把.o直接变成当前目标了
================================================================================================