cppjieba/src/Makefile
2013-07-26 13:46:43 +08:00

77 lines
1.8 KiB
Makefile

CXX := g++
LD := g++
AR := ar rc
INCS := -I. -I./cppcommon
DEBUG_CXXFLAGS := -g -DDEBUG
RELEASE_CXXFLAGS := -Wall
ifeq (YES, ${DEBUG})
CXXFLAGS := ${DEBUG_CXXFLAGS}
LDFLAGS := ${DEBUG_LDFLAGS}
else
CXXFLAGS := ${RELEASE_CXXFLAGS}
LDFLAGS := ${RELEASE_LDFLAGS}
endif
DOLINK := $(LD) $(LDFLAGS) -o $@ $^
DOPACK := $(AR)
SOURCES := $(wildcard *.cpp)
OBJS := $(patsubst %.cpp,%.o,$(SOURCES))
CMDIR := ./cppcommon
CMLIB := $(CMDIR)/libcm.a
TMPDIR := ./cppjiebatmp
LIBA := libcppjieba.a
# remove the objs after compilation
.INTERMEDIATE:
.PHONY: clean $(CMLIB)
all: $(LIBA)
# This is a suffix rule
#.c.o:
%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $<
${LIBA}: $(TMPDIR) $(OBJS) $(CMLIB)
cp $(CMLIB) $(TMPDIR) && cd $(TMPDIR) && ar x `basename $(CMLIB)`
$(DOPACK) $@ $(OBJS) $(TMPDIR)/*.o
rm -rf $(TMPDIR)
$(TMPDIR):
mkdir $@
$(CMLIB):
cd $(CMDIR) && $(MAKE)
#unit test
Trie.ut: Trie.cpp Trie.h globals.h TransCode.cpp TransCode.h $(CMLIB)
$(CXX) -o $@ $(CXXFLAGS) Trie.cpp TransCode.cpp -DTRIE_UT $(CMLIB)
Segment.ut: Segment.cpp Trie.cpp Segment.h Trie.h globals.h $(CMLIB)
$(CXX) -o $@ $(CXXFLAGS) Segment.cpp Trie.cpp TransCode.cpp -DSEGMENT_UT $(CMLIB)
KeyWordExt.ut: KeyWordExt.cpp KeyWordExt.h Segment.h Trie.h globals.h TransCode.cpp TransCode.h $(CMLIB)
$(CXX) -o $@ $(CXXFLAGS) KeyWordExt.cpp Segment.cpp Trie.cpp TransCode.cpp -DKEYWORDEXT_UT $(CMLIB)
TransCode.ut: TransCode.cpp TransCode.h globals.h $(CMLIB)
$(CXX) -o $@ $(CXXFLAGS) TransCode.cpp -DCPPJIEBA_TRANSCODE_UT $(CMLIB)
clean:
rm -f *.o *.d *.ut $(LIBA)
rm -rf $(TMPDIR)
cd $(CMDIR) && make clean
sinclude $(SOURCES:.cpp=.d)
%.d:%.cpp
@set -e; rm -f $@; \
$(CXX) -MM $< > $@.$$$$; \
sed 's,\($*\).o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$