-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
67 lines (54 loc) · 1.39 KB
/
Makefile
File metadata and controls
67 lines (54 loc) · 1.39 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# ==== Forked from Jason Lau's Makefile ====
# File: Makefile
# Description: Makefile for the problem specified by file path
# Author: Jason Lau <i@dotkrnl.com>
# Date: 2015-03-15
# License: Apache
# Feel free to contact me if there's any questions
#
MAIN ?= MeshSimplification
ifeq ($(OS), Windows_NT)
ARGV ?=
else
ARGV ?=
endif
SRCDIR ?= src
OBJDIR ?= bin
CXX ?= g++
CXXFLAGS ?= -O2 -c -Wall -std=c++11
LDFLAGS ?=
E ?= @echo
CXXFILES := $(wildcard $(SRCDIR)/*.cpp)
EXE_CXXFILES := $(wildcard $(SRCDIR)/main_*.cpp)
LIB_CXXFILES := $(wildcard $(SRCDIR)/lib_*.cpp)
LIB_OBJFILES := $(LIB_CXXFILES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
HFILES := $(wildcard $(SRCDIR)/*.h)
EXECUTABLES := $(EXE_CXXFILES:$(SRCDIR)/main_%.cpp=%)
ifeq ($(OS), Windows_NT)
MAIN := $(MAIN).exe
EXECUTABLES := $(EXECUTABLES:%=%.exe)
CXXFLAGS += -DWIN32
endif
all: $(EXECUTABLES)
debug: CXXFLAGS += -DDEBUG -g
debug: $(EXECUTABLES)
run: $(MAIN)
./$(MAIN) $(ARGV)
clean:
$(E) + Removing files
ifeq ($(OS), Windows_NT)
del $(EXECUTABLES) $(OBJDIR)\*
else
rm $(EXECUTABLES) $(OBJDIR)/*
endif
.PRECIOUS: $(OBJDIR)/%.o
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(HFILES)
$(E) + Compiling $<
$(CXX) -o $@ -c $< $(CXXFLAGS)
ifeq ($(OS), Windows_NT)
%.exe: $(OBJDIR)/main_%.o $(LIB_OBJFILES)
else
%: $(OBJDIR)/main_%.o $(LIB_OBJFILES)
endif
$(E) + Linking $@
$(CXX) -o $@ $< $(LIB_OBJFILES) $(LDFLAGS)