Makefile 同时编译静态库和动态库

Linux/Unix C/C++ xiujie 179℃ 0评论 已收录

Makefile 同时编译静态库和动态库

# XJ通用工具类库编译
# LiXiujie
# 20151010


DIR_SRC = ./src
DIR_INC = ./include
DIR_LIB = ./lib
SRC = $(wildcard ${DIR_SRC}/*.cpp)  
OBJS = $(patsubst %.cpp,${DIR_SRC}/%.o,$(notdir ${SRC})) 

LocalDate = $(shell date +"%Y%m%d")
LocalTime = $(shell date +"%H%M%S")
LocalYear = $(shell date +"%y")
LocalMonth = $(shell date +"%m")
LocalDay = $(shell date +"%d")

RM = rm -fr
AR = ar crv
CC = g++
FLAG = -g -D__DEBUG__ -w
SHARED = -shared
##XJ_FPIC = -fPIC 

LIB_OBJECT_SO = libXJUtilClass.so.$(LocalYear).$(LocalMonth).$(LocalDay)
LIB_OBJECT_A = libXJUtilClass.a.$(LocalYear).$(LocalMonth).$(LocalDay)

TARGET = $(LIB_OBJECT_SO) $(LIB_OBJECT_A)

LIB_PATH = -L/usr/lib64 -L/lib64 -L/usr/local/lib -L/usr/local/apr/lib\
  -L$(HOME)/lib -L$(HOME)/lib/public \
  -L$(TUXDIR)/lib \
  -L${HOME}/lib/json \
  -L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/precomp/lib \
  -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/sqlplus/lib \
  -L$(ORACLE_HOME)/network/lib -L$(ORACLE_HOME)/plsql/lib \
  -L../lib -Llib
  
INC_PATH = -I${HOME}/include -I$(HOME)/include/public \
  -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/rdbms/demo \
  -I$(ORACLE_HOME)/precomp/public -I$(ORACLE_HOME)/plsql/public \
  -I$(ORACLE_HOME)/include \
  -I../include -I$(DIR_INC)


	
all: 
	-rm -f $(OBJS)
	make so
	-rm -f $(OBJS)
	make a
	@echo $(LIB_OBJECT_SO) "OK"
	@echo $(LIB_OBJECT_A) "OK"

so: $(LIB_OBJECT_SO)

a: $(LIB_OBJECT_A)

${DIR_SRC}/%.o:${DIR_SRC}/%.cpp
	$(CC) -c $< $(INC_PATH) $(FLAG) $(XJ_FPIC) -o $@

$(LIB_OBJECT_SO): XJ_FPIC = -fPIC

$(LIB_OBJECT_SO): $(OBJS)
	$(CC) $? $(FLAG) $(LIB_PATH) $(INC_PATH) $(SHARED) -o  $(DIR_LIB)/$@ 
	@echo "["$@"]Compile complete"

$(LIB_OBJECT_A): XJ_FPIC = 
$(LIB_OBJECT_A): $(OBJS)
	$(AR) $(DIR_LIB)/$@  $(OBJS)
	@echo "["$@"]Compile complete"

clean:
	@echo remove all object files and lib
	-rm -f $(DIR_LIB)/* $(OBJS) *.o

demo:
	$(CC) XJStringUtilMain.cpp -o mainXJStringUtil $(INC_PATH) -lXJUtilClass 
喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址