Skip to content

Instantly share code, notes, and snippets.

@InusualZ
Created January 22, 2015 19:13
Show Gist options
  • Select an option

  • Save InusualZ/c8958c7a7f3b111f1cd8 to your computer and use it in GitHub Desktop.

Select an option

Save InusualZ/c8958c7a7f3b111f1cd8 to your computer and use it in GitHub Desktop.
Generic Executable Makefile
#Makefile Settings
#Project Name
PROJECT=BenchMine
#Source directory
SOURCES_DIRECTORY=src
#Include Directory
INCLUDE_DIRECTORIES="include/"
#Source files extension
SOURCE_FILE_EXT=.cpp
#Sources Files
SOURCES_FILES=$(shell find $(SOURCES_DIRECTORY)/ -name '*$(SOURCE_FILE_EXT)')
#Build Directory
BUILD_DIRECTORY=build
#Final Binarie Directory
BINARY_DIRECTORY=$(BUILD_DIRECTORY)/bin
#Source files compiled = Object = .o
OBJECTS_FILES=$(addprefix $(BUILD_DIRECTORY)/, $(SOURCES_FILES:$(SOURCE_FILE_EXT)=.o))
#Compiler to be used
COMPILER=g++
#Compiler Flags
CFLAGS=-std=c++11 -Wall -I $(INCLUDE_DIRECTORIES)
#Link Flags?
LFLAGS= -lws2_32 -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
all: $(PROJECT)
$(PROJECT): $(OBJECTS_FILES)
@echo " LD $@"
@mkdir -p $(BINARY_DIRECTORY)/
@$(COMPILER) $(wildcard $(BUILD_DIRECTORY)/*.o) $(LFLAGS) -o $(BINARY_DIRECTORY)/$@
@echo "$@ have been succesfully compiled!"
$(BUILD_DIRECTORY)/%.o: %.cpp
@mkdir -p $(BUILD_DIRECTORY)
@echo -e "\tCompiling: $<"
@$(COMPILER) -c $< $(CFLAGS) -MMD
@mv -fu $(notdir $@) *.d $(BUILD_DIRECTORY)/
clean:
@rm -rf $(BUILD_DIRECTORY)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment