自我感觉写得已经很简单了,留下来纪念一下,下次拷贝使用。
第一个,给目录下的每个cpp文件生成相应的可执行文件,文件名为cpp文件名一致,不含后缀。
#
# Testcase Makefile lxslove moodlxs@163.com
#
base := ../..
inc_dirs := -I$(base)/include -I$(base)/include/A -I$(base)/include/B -I$(base)/include/B
common_dirs := $(base)/common/A $(base)/common/B $(base)/common/C
common_cpps := $(foreach n, $(common_dirs), $(wildcard ${n}/*.cpp))
common_objs := $(patsubst %.cpp, %.o, $(common_cpps))
%.o:%.cpp
g++ -c -g -o $@ $< $(inc_dirs)
srcs := $(wildcard *.cpp)
BUILD = $(patsubst %.cpp, %, $(srcs))
%:%.cpp
g++ -g -o $@ $< $(inc_dirs) $(common_objs) -lpthread
all: clean $(common_objs) $(BUILD)
clean:
rm -f $(BUILD)
#
################### Server Makefile For Linux ##########
#
inc_dirs := -I./include -I./include/thread -I./include/net -I./include/util
bin_dir := ../bin
lib_dir := ../lib
cpp_flags = -DLINUX -Wall -g -L$(lib_dir) $(inc_dirs)
%.o: %.cpp
g++ $(cpp_flags) -c -o $@ {1}lt;
proxyserver := $(bin_dir)/proxyserver
module_bins := $(proxyserver)
.PHONY: all
all: $(module_bins)
# 打包common
common_dirs := ./common/thread ./common/net ./common/util
common_cpps := $(foreach n, $(common_dirs), $(wildcard ${n}/*.cpp))
common_objs := $(patsubst %.cpp, %.o, $(common_cpps))
# 生成模块proxyserver
proxyserver_cpps := $(wildcard ./proxyserver/*.cpp)
proxyserver_objs := $(patsubst %.cpp, %.o, $(proxyserver_cpps))
$(proxyserver) : $(common_objs) $(proxyserver_objs)
g++ $(cpp_flags) -o $@ $^ -lpthread
.PHONY:clean
clean:
find ./ -name *.o -exec rm -rf {} \;