-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
77 lines (59 loc) · 1.89 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
CC ?= gcc
CXX ?= g++
C_API_HEADER ?= hello.h
SERVER_BIN ?= hello.cgi
CLIENT_BIN ?= client
GEN_DIR ?= gen
BUILD_DIR ?= build
BIN_DIR ?= $(BUILD_DIR)/bin
OBJ_DIR ?= $(BUILD_DIR)/obj
GSOAP_SRC_DIR ?= gsoap-2.8
SOAPCPP2 ?= soapcpp2
SOAPCPP2_OPTIONS += -c++11
VPATH += $(GEN_DIR)
VPATH += $(GSOAP_SRC_DIR)/gsoap
CPPFLAGS += -I$(GEN_DIR)
CXX_SRCS += soapC.cpp \
stdsoap2.cpp
CXX_OBJS := $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(CXX_SRCS))
$(info "CXX_OBJS:${CXX_OBJS}")
CLIENT_CXX_SRCS = \
soapClient.cpp \
myapp.cpp
CLIENT_CXX_OBJS := $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(CLIENT_CXX_SRCS))
$(info "CLIENT_CXX_OBJS:${CLIENT_CXX_OBJS}")
SERVER_CXX_SRCS = \
soapServer.cpp \
hello.cpp
SERVER_CXX_OBJS := $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(SERVER_CXX_SRCS))
$(info "SERVER_CXX_OBJS:${SERVER_CXX_OBJS}")
define CREATE_DIR
$(shell test ! -e $1 && mkdir -p $1)
endef
$(call CREATE_DIR,$(BUILD_DIR))
$(call CREATE_DIR,$(BIN_DIR))
$(call CREATE_DIR,$(OBJ_DIR))
$(call CREATE_DIR,$(GEN_DIR))
gen_from_api_header:$(C_API_HEADER)
$(SOAPCPP2) $(SOAPCPP2_OPTIONS) -d $(GEN_DIR) $<
$(CXX_OBJS):$(OBJ_DIR)/%.o:%.cpp
@echo ---------------------[build $<]----------------------------------
$(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $< -o $@
$(CLIENT_CXX_OBJS):$(OBJ_DIR)/%.o:%.cpp
@echo ---------------------[build $<]----------------------------------
$(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $< -o $@
$(SERVER_CXX_OBJS):$(OBJ_DIR)/%.o:%.cpp
@echo ---------------------[build $<]----------------------------------
$(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $< -o $@
$(BIN_DIR)/$(CLIENT_BIN):$(CXX_OBJS) $(CLIENT_CXX_OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
$(BIN_DIR)/$(SERVER_BIN):$(CXX_OBJS) $(SERVER_CXX_OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
client: $(BIN_DIR)/$(CLIENT_BIN)
server: $(BIN_DIR)/$(SERVER_BIN)
all: client server
clean:
rm -rf $(GEN_DIR)
rm -rf $(BIN_DIR)
rm -rf $(OBJ_DIR)
rm -rf $(BUILD_DIR)