Makefile.impl 803 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
TARGET ?= main

CXX := g++

SRC_EXT := cpp
OPTFLAG ?= -O2
BUILD_DIR ?= build

override CXXFLAGS += \
	-Isrc -std=c++11 -ggdb -flto \
	-Wall -Wextra -Wnon-virtual-dtor -Wno-unused-parameter -Winvalid-pch \
	-Wno-unused-local-typedefs \
	$(OPTFLAG)
override LDFLAGS += -flto
override V ?= @

CXXSOURCES := $(shell find src example -name "*.$(SRC_EXT)")
OBJS := $(addprefix $(BUILD_DIR)/,$(CXXSOURCES:.$(SRC_EXT)=.o))
DEPFILES := $(OBJS:.o=.d)

all: $(TARGET)

-include $(DEPFILES)

$(BUILD_DIR)/%.o: %.$(SRC_EXT)
	@echo "[cxx] $< ..."
	@mkdir -pv $(dir $@)
	$(V)$(CXX) $(CXXFLAGS) -MM -MT "$@" "$<"  > "$(@:.o=.d)"
	$(V)$(CXX) -c $< -o $@ $(CXXFLAGS)


$(TARGET): $(OBJS)
	@echo "Linking ..."
	$(V)$(CXX) $(OBJS) -o $@ $(LDFLAGS)

clean:
	rm -rf $(BUILD_DIR) $(TARGET)

.PHONY: all clean

# vim: ft=make