Skip to content

Instantly share code, notes, and snippets.

@Oxore
Last active April 13, 2018 14:21
Show Gist options
  • Save Oxore/62d27282480c5a9af4396918c4616b23 to your computer and use it in GitHub Desktop.
Save Oxore/62d27282480c5a9af4396918c4616b23 to your computer and use it in GitHub Desktop.
C++ project simple Makefile boilerplate (with Google Test)
CXX=g++
RM=rm
Q=@
QQ=@
SRC=src
BUILD=build
SOURCES=$(wildcard $(SRC)/*.cpp)
OBJECTS:=$(patsubst $(SRC)/%.cpp,$(BUILD)/%.o,$(SOURCES))
PCH_SRC:=./include/Headers.h
PCH_OUT:=./include/Headers.h.gch
INCLUDE:=./include
INCLUDE+=./submodules/prefix/include
INCLUDE:=$(patsubst %,-I%,$(INCLUDE))
LDFLAGS:=-L./submodules/prefix/lib64
LDFLAGS+=-lgtest
LDFLAGS+=-lgmock
LDFLAGS+=-lpthread
CFLAGS+=-Wall
CFLAGS+=-Wextra
CFLAGS+=-O0
CFLAGS+=-g
CFLAGS+=-std=c++17
TARGET=main
all: $(PCH_OUT) $(TARGET)
$(TARGET): $(OBJECTS)
$(QQ) echo " LD $@"
$(Q) $(CXX) -o $@ $^ $(CFLAGS) $(LDFLAGS)
$(OBJECTS): | $(BUILD)
$(BUILD):
$(Q) mkdir -p $(BUILD)
$(BUILD)/%.o: $(SRC)/%.cpp
$(QQ) echo " CXX $@"
$(Q) $(CXX) -c -o $@ $< $(INCLUDE) $(CFLAGS)
$(PCH_OUT): $(PCH_SRC)
$(QQ) echo " CXX $@"
$(Q) $(CXX) -c -o $@ $< $(INCLUDE) $(CFLAGS)
clean:
$(QQ) echo " RM $(TARGET) $(OBJECTS)"
$(Q) $(RM) -f $(TARGET) $(OBJECTS)
mrproper: clean
$(QQ) echo " RM $(PCH_OUT)"
$(Q) $(RM) -f $(PCH_OUT)
.PHONY: clean mrproper all
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment