一個通用的Makefile寫法,可以自動將當前的.cpp作爲編譯目標,自帶clean,使用時只需將程序名稱、庫和頭文件等改一下即可正常工作。
XX = g++
CXXFLAGS = -std=c++11 -c -g
CLIBS = -L../../lib/linux -lssl
INCLUDE_DIRS = -I../../include
SRC=$(wildcard *.cpp)
OBJECTS:=$(patsubst %.cpp,%.o,$(SRC))
PROGRAM:= p2ptest
BINDIR := ../bin/$(PROGRAM)
TARGET = $(BINDIR)/$(PROGRAM)
all: MD $(TARGET)
$(TARGET) : $(OBJECTS)
$(XX) -static-libstdc++ -o $(TARGET) $(OBJECTS) $(CLIBS)
$(OBJECTS) : %.o : %.cpp
$(XX) $(CXXFLAGS) $< -o $@ $(INCLUDE_DIRS)
MD:
mkdir -p $(BINDIR)
.PHONY : clean
clean:
rm -rf $(TARGET) $(OBJECTS)