在Linux下编程许久,没用特别的IDE,用了所谓的神器Emacs。整理了一个万用的make file文件。希望能大家有所帮助
#Digital UNIX 4.0 compilantion flag;
SRCDIR = src
INCDIR += -I./include
OBJDIR = obj
BINDIR = bin
#CXX = arm-vfp-linux-gnu-g++
#CXX = arm-linux-g++
CXX = g++
CXXFLAGSDebug = -g3 -Wall $(INCDIR) #-I/opt/nxp/gcc-4.3.2-glibc-2.7/include
CXXFLAGSRelease = -library -w -O2 $(INCDIR)
CXXFLAGS = -g -Wall -O2 $(INCDIR)
LDFLAGS += -lpthread -ltinyxml
RTFLAGS = -lrt
#RTFLAGS =
PREDEFINE +=
ifeq ($(MAKECMDGOALS), release)
CXXFLAGS = $(CXXFLAGSRelease)
endif
ifeq ($(MAKECMDGOALS), debug)
PREDEFINE += -D __DEBUG
CXXFLAGS = $(CXXFLAGSDebug)
endif
ifeq ($(MAKECMDGOALS), test)
PREDEFINE += -D __DEBUG -D __TEST
CXXFLAGS = $(CXXFLAGSDebug)
LDFLAGS += -lcppunit
endif
ifeq ($(MAKECMDGOALS), test)
PROGS = Testxxx
else
PROGS = xxx
endif
ABS_SOURCES = $(wildcard $(SRCDIR)/*.cpp)
SOURCES = $(subst $(SRCDIR)/,, $(ABS_SOURCES))
OBJS += $(subst .cpp,.o, $(SOURCES))
ifeq ($(MAKECMDGOALS), test)
INCDIR += -I./testInclude
vpath %.cpp $(SRCDIR) testSrc
vpath %.h $(INCDIR) testInclude
TestABS_SOURCES = $(wildcard testSrc/*.cpp)
TestSOURCES = $(subst testSrc/,, $(TestABS_SOURCES))
OBJS += $(subst .cpp,.o, $(TestSOURCES))
else
vpath %.cpp $(SRCDIR)
endif
.PHONY: all debug test release
all : $(PROGS)
@echo "*********************Good boy! All have been done.******************"
@echo ""
debug : $(PROGS)
@echo "*********************Good boy! Debug make file is OK.******************"
@echo ""
test : $(PROGS)
@echo "*********************Good boy! Test make file is OK.******************"
@echo ""
release : $(PROGS)
@echo "**********************Fine! The release make is OK!***************************"
@echo ""
$(PROGS) :: $(OBJS)
$(CXX) $(addprefix $(OBJDIR)/,$^) $(RTFLAGS) $(LDFLAGS) $(PREDEFINE) -o $(BINDIR)/$@
%.o::%.cpp
$(CXX) -c $(CXXFLAGS) $< $(PREDEFINE) -o $(OBJDIR)/$@
.PHONY: clean
clean:
-$(RM) $(BINDIR)/* $(OBJDIR)/*.o