gpt4 book ai didi

c++ - 用于构建 C++ Google Protocol Buffers 项目的 Makefile

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:04 25 4
gpt4 key购买 nike

我刚开始使用 Google Protocol Buffers,我正在尝试将 Protocol Buffer 编译器的 C++ 输出文件合并到我的项目中。到目前为止,我一直在为我的项目使用一个简单的 makefile,它可以用来构建所有共享相同扩展名的源文件。我的源文件使用“.cpp”,但 Google Protocol Buffers 将其源输出为“.pb.cc”文件。我需要能够将两种类型的源文件编译并链接到一个可执行文件中。

我已经搜索并摆弄我的 makefile 几个小时了,但没有成功。

我当前的生成文件:

PROGRAM_NAME=aserv
CC=gcc
CXX=g++
RM=rm -f
CPPFLAGS=-g --std=c++14 -O3 -I/usr/local/include/
LDFLAGS=-g -L/usr/local/lib -L/usr/local/lib/boost
LDLIBS= -lrtaudio -pthread -lboost_system -lprotobuf

INSTALL_DIR = /usr/local/bin/

SRCS=$(wildcard *.cpp)
OBJS=$(subst .cpp,.o,$(SRCS))


all: $(PROGRAM_NAME)
$(PROGRAM_NAME): $(OBJS)
$(CXX) $(LDFLAGS) -o $(PROGRAM_NAME) $(OBJS) $(LDLIBS)

depend: .depend

.depend: $(SRCS)
rm -f ./.depend
$(CXX) $(CPPFLAGS) -MM $^>>./.depend;

clean:
$(RM) $(OBJS) $(PROGRAM_NAME) .depend
install:
cp $(PROGRAM_NAME) $(INSTALL_DIR)$(PROGRAM_NAME)
uninstall:
$(RM) $(INSTALL_DIR)$(PROGRAM_NAME)
dist-clean: clean
$(RM) *~ .depend

include .depend

我对编写 makefile 还不是很精通,所以我只是不太清楚该怎么做才能完成这项工作。

如果有帮助,我在 Ubuntu 16.04 beta 上安装了 GNU make 4.1 和 gcc 5.3.1

最佳答案

我无法让您原来的 Makefile 工作,所以我更改了一些东西,但我认为这其中棘手的部分是 make 生成的隐式规则来构建您的 .o 文件。我认为对于 .pb.cc 文件,您需要生成 .pb.o 对象,以便隐式规则可以匹配它们。

试试这个:

PROGRAM_NAME = aserv
CC = gcc
CXX = g++
RM = rm -f

CXXFLAGS = --std=c++14 -pthread -g -O3 -MMD -MP
CPPFLAGS = -I/usr/local/include/
LDFLAGS = -L/usr/local/lib -L/usr/local/lib/boost
LDLIBS = -lrtaudio -lboost_system -lprotobuf

INSTALL_DIR = /usr/local/bin

SRCS = $(wildcard *.cpp) $(wildcard *.pb.cc)
OBJS = $(subst .pb.cc,.pb.o,$(subst .cpp,.o,$(SRCS)))
DEPS = $(subst .pb.cc,.pb.d,$(subst .cpp,.d,$(SRCS)))

all: $(PROGRAM_NAME)

$(PROGRAM_NAME): $(OBJS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)

-include $(DEPS)

clean:
$(RM) $(OBJS) $(PROGRAM_NAME)

install:
cp $(PROGRAM_NAME) $(INSTALL_DIR)

uninstall:
$(RM) $(INSTALL_DIR)/$(PROGRAM_NAME)

dist-clean: clean
$(RM) *~ $(DEPS)

关于c++ - 用于构建 C++ Google Protocol Buffers 项目的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com