一、编译项目
CXX = g++
CXXFLAG = -g -O0 -Wall -std=c++17 -DEFFICIENTNET
INCPATH = -I. -I../. -I../../../utility
LIBPATH = -L/usr/lib64 -L/usr/local/lib -pthread -lzmq -lprotobuf -lonload_zf
SOURCES = $(wildcard *.cpp)
TARGET = demo
TEMPS = $(patsubst %.cpp, %.o, $(SOURCES))
OBJECTS += $(patsubst %.cc, %.o, $(TEMPS))
${TARGET}:${OBJECTS}
$(CXX) $^ $(LIBPATH) -o $@
%.o:%.cpp
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
%.o:%.cc
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
clean:
rm -rf $(OBJECTS)
二、编译库
CXX = g++ -shared -fPIC
CXXFLAG = -g -O0 -Wall -std=c++17 -fPIC -DEFFICIENTNET
INCPATH = -I../../utility
LIBPATH = -L/usr/lib64 -L/usr/local/lib -pthread -lzmq -lprotobuf -lonload_zf
SOURCES = $(wildcard *.cpp)
OUTDIR = lib
SO_TARGET = mylib.so
LIB_TARGET = mylib.a
TEMPS = $(patsubst %.cpp, %.o, $(SOURCES))
OBJECTS += $(patsubst %.cc, %.o, $(TEMPS))
${LIB_TARGET}:${OBJECTS}
ar cr ${LIB_TARGET} ${OBJECTS}
${SO_TARGET}:${OBJECTS}
$(CXX) $^ $(LIBPATH) -o $@
%.o:%.cpp
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
%.o:%.cc
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
all:
make ${SO_TARGET}
make ${LIB_TARGET}
mkdir -p ${OUTDIR}
mv ${LIB_TARGET} ${SO_TARGET} ${OUTDIR}/
clean:
rm -rf ${OBJECTS} ${SO_TARGET} ${LIB_TARGET} ${OUTDIR}
三、加载链接库
CXX = g++
CXXFLAG = -g -O0 -Wall -std=c++17 -DEFFICIENTNET
INCPATH = -I. -I../
LIBPATH = ../lib/mylib.so
SOURCES = $(wildcard *.cpp)
TARGET = demo
TEMPS = $(patsubst %.cpp, %.o, $(SOURCES))
OBJECTS += $(patsubst %.cc, %.o, $(TEMPS))
${TARGET}:${OBJECTS}
$(CXX) $^ $(LIBPATH) -o $@
%.o:%.cpp
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
%.o:%.cc
$(CXX) $(INCPATH) $(CXXFLAG) -c $? -o $@
clean:
rm -rf $(OBJECTS)