ROOTDIR = ..
include $(ROOTDIR)/config/linux.mak
MODULE = XMLTool
MODULE_LIB = xmltool
ifdef BUILD_SO
ifeq ($(BUILD_SO), true)
LIBNAME = lib$(MODULE_LIB).so
CFLAGS += -fPIC
LFLAGS = -shared -Wl,-soname,$(LIBNAME)
else
LIBNAME = lib$(MODULE_LIB).a
endif
endif
DEPENDENT_MODULES = $(ROOTDIR)/Locker
CFLAGS += -I$(ROOTDIR)/$(MODULE)/include
CFLAGS += `xml2-config --cflags`
CFLAGS += -I$(ROOTDIR)/Locker/include
LDFLAGS += -L$(ROOTDIR)/$(MODULE)/lib -L$(ROOTDIR)/$(MODULE)/release/
LDFLAGS += -L$(DEPENDENT_MODULES)/release/
LDFLAGS += -lstdc++ -lpthread -luuid -llocker
LDFLAGS += `xml2-config --libs`
OBJS += XML.o
MAIN_OBJ =
EXE =
OBJS_SRC = $(addprefix src/,$(OBJS))
MAIN_OBJ_SRC = $(addprefix src/,$(MAIN_OBJ))
LIBNAME_RELEASE = $(addprefix release/,$(LIBNAME))
EXE_RELEASE = $(addprefix release/,$(EXE))
TEST_OBJ = test.o
TEST_EXE = test/test
TEST_OBJ_TST = $(addprefix test/,$(TEST_OBJ))
all: dependent_module $(LIBNAME_RELEASE) $(EXE_RELEASE) $(TEST_EXE)
@echo "Please export LD_LIBRARY_PATH..."
@echo "e.g. export LD_LIBRARY_PATH=`pwd`/release"
dependent_module:
@for modules in $(DEPENDENT_MODULES); do \
make -C $$modules; \
done;
$(LIBNAME_RELEASE): $(OBJS_SRC)
@if [ "$$BUILD_SO" == "true" ]; then \
$(LINK) $(LFLAGS) -o $(LIBNAME_RELEASE) $^ ;\
else \
$(LD) -r -o $(LIBNAME_RELEASE) $^ ;\
fi
$(EXE_RELEASE): $(LIBNAME_RELEASE) $(MAIN_OBJ_SRC)
$(C++) -o $@ $(MAIN_OBJ_SRC) $(LDFLAGS) -l$(MODULE_LIB)
$(TEST_EXE): $(LIBNAME_RELEASE) $(TEST_OBJ_TST)
$(CC) -o $@ $(TEST_OBJ_TST) $(LDFLAGS) -l$(MODULE_LIB)
.cpp.o:
$(C++) -c $< -o $(patsubst %.cpp,%.o,$<) $(CFLAGS)
.c.o:
$(CC) -c $< -o $(patsubst %.cpp,%.o,$<) $(CFLAGS)
clean:
$(RM) $(LIBNAME_RELEASE) $(EXE_RELEASE) $(OBJS_SRC) $(MAIN_OBJ_SRC)
$(RM) $(TEST_OBJ_TST) $(TEST_EXE) test/output*
2007年7月4日 星期三
makefile example
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言