Я только начал обманывать с помощью буферов протокола Google, и я пытаюсь включить выходные файлы C++ из компилятора буфера протокола в свой проект. До сих пор я использовал простой make-файл для своих проектов, и он делает трюк для создания исходных файлов, все используют одно и то же расширение. Я использую «.cpp» для своих исходных файлов, но буферы протокола Google выводят его как файлы «.pb.cc». Мне нужно иметь возможность компилировать и связывать оба типа исходных файлов в один исполняемый файл.Makefile для создания C++ Project Protocol Buffers Project
Я искал и прокручивал свой файл в течение нескольких часов и не имел успеха.
Мой текущий 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
Я не слишком хорошо разбирается в написании Makefiles, поэтому я просто не знаю, что нужно сделать, чтобы сделать эту работу.
Если это помогает я иметь GNU сделать 4.1 и GCC 5.3.1 на Ubuntu 16.04 бета
Два маленьких sidenotes, то лучше использовать встроенные переменные, как '$ @' (имя цели), или '$^'(разделенных пробелами список зависимостей цели). Кроме того, файлы libs должны быть связаны до того, как ваши объекты будут связаны. – Leandros