我剛開始使用Google協議緩衝區開玩笑,我試圖將來自協議緩衝區編譯器的C++輸出文件合併到我的項目中。迄今爲止,我一直在爲我的項目使用一個簡單的makefile,它構建了所有共享相同擴展名的源文件。我使用「.cpp」作爲我的源文件,但Google Protocol Buffers輸出它的源文件爲「.pb.cc」文件。我需要能夠將兩種類型的源文件編譯並鏈接到一個可執行文件中。用於構建C++的Makefile用於構建C++的Google協議緩衝區項目
我一直在尋找和擺弄我的makefile幾個小時,現在沒有成功。
我目前的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太精通,所以我只是不太知道怎樣做才能使這項工作。
如果有幫助,我有GNU使4.1和gcc 5.3.1在Ubuntu 16.04測試版
兩個小圖片的標題說明,最好使用內置變量,比如'$ @'(目標的名稱),或'$ ^'(空格分隔的列表目標的依賴關係)。另外,在鏈接對象之前,必須鏈接庫。 – Leandros