目录结构
Througput
├── Makefile
├── CPP_Throughput_Data
│ ├── Makefile
├── CPP_Throughput_Pub
│ ├── Makefile
├── CPP_Throughput_Sub
│__ ├── Makefile
外层
PARENT_NAME = Throughput
LIB_NAME = CPP_${PARENT_NAME}_Data
PUB_NAME = CPP_${PARENT_NAME}_Pub
SUB_NAME = CPP_${PARENT_NAME}_Sub
export
.PHONY: all clean
all: pub sub
pub: lib
$(MAKE) -C $(PUB_NAME)
sub: lib
$(MAKE) -C $(SUB_NAME)
lib:
$(MAKE) -C $(LIB_NAME)
clean:
make clean -C $(LIB_NAME)
make clean -C $(PUB_NAME)
make clean -C $(SUB_NAME)
静态库
ifeq ($(BUILD_TARGET), Debug)
CXXFLAGS = -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT
else
CXXFLAGS = -pipe -std=gnu++11 -Wall -W -D_REENTRANT
endif
MKDIR = mkdir -p
DESTDIR = ../../lib/$(BUILD_TARGET)/
TARGET = $(DESTDIR)/lib$(LIB_NAME).a
$(shell $(MKDIR) $(DESTDIR))
DEFINES = -D
INCPATH = \
-I../../generated \
-I$(RTSB_HOME)/OS/include \
-I$(RTSB_HOME)/KN/include \
-I$(RTSB_HOME)/DB/include \
-I$(RTSB_HOME)/UI/include \
-I$(RTSB_HOME)/C++/CPPI
head_list := $(wildcard ../../generated/*.h)
src_list := $(wildcard ../../generated/*.cpp)
src_file_list := $(notdir $(src_list))
objs := $(src_file_list:%.cpp=%.o)
$(TARGET): $(objs)
ar cqs $(TARGET) $^
$(objs): %.o : ../../generated/%.cpp $(head_list) idlpp_target
g++ -c $(CXXFLAGS) $(INCPATH) $<
idlpp_target:
idlpp -I "${RTSB_HOME}/etc/idl" -l cpp -d ../../generated ../../../idl/${PARENT_NAME}.idl
.PHONY: clean
clean:
-rm *.o $(TARGET)
动态库
ifeq ($(BUILD_TARGET), Debug)
CXXFLAGS = -pipe -g -fPIC -std=gnu++11 -Wall -W -D_REENTRANT
else
CXXFLAGS = -pipe -fPIC -std=gnu++11 -Wall -W -D_REENTRANT
endif
MKDIR = mkdir -p
DESTDIR = ../../lib/$(BUILD_TARGET)/
TARGET = $(DESTDIR)/lib$(LIB_NAME).so
$(shell $(MKDIR) $(DESTDIR))
DEFINES = -D
INCPATH = \
-I../../generated \
-I$(RTSB_HOME)/OS/include \
-I$(RTSB_HOME)/KN/include \
-I$(RTSB_HOME)/DB/include \
-I$(RTSB_HOME)/UI/include \
-I$(RTSB_HOME)/C++/CPPI
head_list := $(wildcard ../../generated/*.h)
src_list := $(wildcard ../../generated/*.cpp)
src_file_list := $(notdir $(src_list))
objs := $(src_file_list:%.cpp=%.o)
$(TARGET): $(objs)
g++ -shared -o $(TARGET) $^
$(objs): %.o : ../../generated/%.cpp $(head_list) idlpp_target
g++ -c $(CXXFLAGS) $(INCPATH) $<
idlpp_target:
idlpp -I "${RTSB_HOME}/etc/idl" -l cpp -d ../../generated ../../../idl/${PARENT_NAME}.idl
.PHONY: clean
clean:
-rm *.o $(TARGET)
可执行程序
ifeq ($(BUILD_TARGET), Debug)
CXXFLAGS = -pipe -g -fPIC -std=gnu++11 -Wall -W -D_REENTRANT
else
CXXFLAGS = -pipe -fPIC -std=gnu++11 -Wall -W -D_REENTRANT
endif
MKDIR = mkdir -p
DESTDIR = ../../bin/$(BUILD_TARGET)/$(OSNAME)/$(OS_DIST_NAME)/$(OSARCH)/$(OS_VERSION)
TARGET = $(DESTDIR)/$(PUB_NAME)
$(shell $(MKDIR) $(DESTDIR))
DEFINES = -D
INCPATH = \
-I../../src/common \
-I../../generated \
-I$(RTSB_HOME)/OS/include \
-I$(RTSB_HOME)/KN/include \
-I$(RTSB_HOME)/DB/include \
-I$(RTSB_HOME)/UI/include \
-I$(RTSB_HOME)/C++/CPPI
LIBS = -L../../lib/$(BUILD_TARGET) -l$(LIB_NAME) -L$(RTSB_HOME)/lib/$(BUILD_TARGET)/$(OSNAME)/$(OS_DIST_NAME)/$(OSARCH)/$(OS_VERSION) -lOS -lKN -lCPPI
head_list := $(shell find ../../src -name '*.h**')
src_list := ../../src/implementation.cpp ../../src/publisher.cpp
src_file_list := $(notdir $(src_list))
objs := $(src_file_list:%.cpp=%.o)
$(TARGET): $(objs)
g++ -o $(TARGET) $^ $(LIBS)
$(objs): %.o : ../../src/%.cpp $(head_list)
g++ -c $(CXXFLAGS) $(INCPATH) $<
.PHONY: clean
clean:
-rm *.o $(TARGET)