makefile文件编写

目录结构如下:bin、build、obj、include、src、protos、third为目录

.
|-- bin
|   |-- client
|   `-- server
|-- build
|   |-- makefile
|   `-- obj
|       |-- helloworld.grpc.pb.d
|       |-- helloworld.grpc.pb.o
|       |-- helloworld.pb.d
|       `-- helloworld.pb.o
|-- include
|-- readme.md
`-- src
    |-- build.sh
    |-- client.cc
    |-- protos
    |   |-- gencode.sh
    |   |-- helloworld.grpc.pb.cc
    |   |-- helloworld.grpc.pb.h
    |   |-- helloworld.pb.cc
    |   |-- helloworld.pb.h
    |   `-- helloworld.proto
    |-- server.cc
    `-- third

makefile内容如下:

# https://blog.csdn.net/qq_36243942/article/details/85161179
# https://blog.csdn.net/whahu1989/article/details/82078563

incdirs := ../include
srcdirs := ../src \
           ../src/third \
           ../src/protos

srcs :=  \
        helloworld.pb.cc helloworld.grpc.pb.cc

objdir := obj

objlist := $(patsubst %.cc, $(objdir)/%.o, $(srcs))

INCDIR := $(patsubst %, -I%, $(incdirs))

#CFLAG = -Werror -I../include
CFLAG = \
        -L/usr/local/lib `pkg-config --cflags protobuf grpc` \
        -std=c++11 `pkg-config --libs protobuf grpc++ grpc` \
        -Wl,--no-as-needed \
        -lgrpc++_reflection -ldl \
        -lpthread
        #-Wl,--as-needed -ldl

vpath %.cc $(srcdirs)

vpath %.h $(incdirs)

.PHONY: all clean

all: $(objdir) $(objlist)
	@echo base lib compile done

client: $(objlist)
	g++ -o ../bin/client ../src/client.cc $^ $(CFLAG)

server: $(objlist)
	g++ -o ../bin/server ../src/server.cc $^ $(CFLAG)

$(objdir):
	mkdir $(objdir)

$(objdir)/%.o: %.cc
	g++ -MD $(CFLAG) $(INCDIR) -c $< -o $@ 

clean:
	rm -fr $(objdir)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值