#Makefile
#
#
#==============================================
# Makefile (C) YANG Wen 2007-08-16
#==============================================
#Define compiler and file FILESUFFIX
CC = $(CROSS_COMPILE)gcc
FILESUFFIX = c
#Define compile options
CCFLAG = -Wall -pedantic -std=c99
DEBUG_CCFLAG = -g -D_DEBUG
RELEASE_CCFLAG = -O2
#Define link options
DEBUG_LIB =
RELEASE_LIB =
#add all *.$(FILESUFFIX) files as source files
#add all *.h files as header files
SOURCEFILELIST = $(wildcard *.$(FILESUFFIX))
HEADERFILELIST = $(wildcard *.h)
#Generate object files' name from source files
DEBUG_OBJECTLIST = $(patsubst %.$(FILESUFFIX), debug/%.o, $
(SOURCEFILELIST))
RELEASE_OBJECTLIST = $(patsubst %.$(FILESUFFIX), release/%.o, $
(SOURCEFILELIST))
#Define target files' name
TARGET = $(notdir $(CURDIR))
DEBUG_TARGET = debug/$(TARGET)d
RELEASE_TARGET = release/$(TARGET)
.PHONY : all prepared prepare debug release ctags run clean
#Build all targets
all : debug release
debug : prepared $(DEBUG_TARGET)
release : prepare $(RELEASE_TARGET)
prepared :
@-mkdir -p debug
prepare :
@-mkdir -p release
#Build DEBUG target
$(DEBUG_TARGET) : $(DEBUG_OBJECTLIST)
$(CC) $(CCFLAG) $(DEBUG_CCFLAG) -o $(DEBUG_TARGET) $
(DEBUG_OBJECTLIST) $(DEBUG_LIB)
#Define DEBUG objects dependence
$(DEBUG_OBJECTLIST) : debug/%.o : %.$(FILESUFFIX) $(HEADERFILELIST)
$(CC) $(CCFLAG) $(DEBUG_CCFLAG) -c -o $@ $<
#Build RELEASE target
$(RELEASE_TARGET) : $(RELEASE_OBJECTLIST)
$(CC) $(CCFLAG) $(RELEASE_CCFLAG) -o $(RELEASE_TARGET) $
(RELEASE_OBJECTLIST) $(RELEASE_LIB)
#Define RELEASE objects dependence
$(RELEASE_OBJECTLIST) : release/%.o : %.$(FILESUFFIX) $
(HEADERFILELIST)
$(CC) $(CCFLAG) $(RELEASE_CCFLAG) -c -o $@ $<
#Create tags
ctags:
@rm -f tags
ctags *.h *.$(FILESUFFIX)
#Run DEBUG_TARGET
run :
@echo -e "\n\n====run the debug version app : [$(CURDIR)/$
(DEBUG_TARGET) $(APPARGV)]====\n\n"
@$(CURDIR)/$(DEBUG_TARGET) $(APPARGV)
#Clean all objects and targets
clean :
-rm -rf debug release
#The END
> > 修改Vim的选项和修改Makefile区别并不大啊。Makefile的功能要强大得多。你这样的方法只能适合单文件的小项目,而且换到其它目录去make其--他项目又要改一次选项。使用Makefile的话不管在那个项目(目录)都一样::make。- 隐藏被引用文字 -
>
> - 显示引用的文字 -