Google Protokolü Arabelleklerini kullanarak dalga geçmeye başladım ve protokol arabellek derleyicisinden C++ çıktı dosyalarını projeme dahil etmeye çalışıyorum. Projelerim için şu ana kadar basit bir makefile kullanmıştım ve hepsi aynı uzantıyı paylaşan kaynak dosyaları oluşturmanın hilesiydi. Kaynak dosyam için ".cpp" kullanıyorum, ancak Google Protokolü Arabellekleri kaynağını ".pb.cc" dosyaları olarak veriyor. Her iki kaynak dosya türünü tek bir yürütülebilir dosyaya derleyebilmem ve bağlayabilmem gerekir.Bina için Makefile C++ Google Protokolü Arabellekleri Projesi
Şimdiye kadar birkaç saat boyunca makefile ile uğraşıyor ve etrafta dolaşıyor ve başarı elde edemedim.
Benim Güncel 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
Onu çok iyi yazma makefiles usta değilim henüz, bu yüzden sadece oldukça bu işi yapmak için ne bilmiyorum.
bu i GNU Ubuntu 16.04 Beta üzerinde 4.1 ve gcc 5.3.1 yapmak zorunda yardımcı olursa
İki küçük sidenotes, kullanımı daha iyidir Yerleşik değişkenler, '$ @' (hedefin adı) veya '$ ^' (boşluk ayrılmış liste gibi hedefin bağımlılıkları). Ayrıca, lib'lerin nesneleriniz birbirine bağlanmadan önce bağlanması gerekir. – Leandros