哥的两个Makefile

自我感觉写得已经很简单了,留下来纪念一下,下次拷贝使用。

第一个,给目录下的每个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)
                    


第二个,有公共库common,有几个模块X,Y,Z, 每个模块都依赖common库.

#
################### 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 {} \;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值