Skip to content

Commit 3d9cf69

Browse files
committed
generic and smart but not perfect makefile added
1 parent de21ece commit 3d9cf69

File tree

1 file changed

+57
-23
lines changed

1 file changed

+57
-23
lines changed

makefile

Lines changed: 57 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,66 @@
1-
# what to compile
2-
OBJS = main.cpp SU.cpp
1+
#
2+
# VARIABLES AND SETTINGS
3+
#
34

4-
# what to compile with
5-
CC = g++
5+
# compiler
6+
CC := g++
7+
# compilation flags
8+
CFLAGS := -O -Wall -std=c++11 `sdl-config --cflags` -DUSING_SDL1
9+
LFLAGS := `sdl-config --libs` -lSDL_ttf
610

7-
# compile flags
8-
COMPILER_FLAGS = -O -Wall -std=c++11 `sdl-config --cflags` -DUSING_SDL1
9-
COMPILER_FLAGS2 = -O -Wall -std=c++11 `sdl2-config --cflags`
11+
# source files
12+
SRCDIR := src
13+
SRCEXT := cpp
14+
SRCS := $(wildcard $(SRCDIR)/*.$(SRCEXT)) $(wildcard $(SRCDIR)/SU/*.$(SRCEXT))
1015

11-
# what to link
12-
LINKER_FLAGS = `sdl-config --libs` -lSDL_ttf
13-
LINKER_FLAGS2 = `sdl2-config --libs` -lSDL2_ttf
16+
# building
17+
BUILDDIR := build
18+
OBJS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SRCS:.$(SRCEXT)=.o))
1419

15-
# output name
16-
OBJ_NAME = sdl_universe
20+
# output
21+
OUTPUTDIR := bin
22+
TARGET := SDL_Universe
1723

18-
default: sdl1
1924

20-
sdl2: $(OBJS)
21-
@echo "Building with SDL2"
22-
$(CC) $(OBJS) $(COMPILER_FLAGS2) $(LINKER_FLAGS2) -o $(OBJ_NAME)
23-
./$(OBJ_NAME)
2425

25-
sdl1: $(OBJS)
26-
@echo "Building with SDL1.2"
27-
$(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME)
28-
./$(OBJ_NAME)
2926

30-
# fresh start
27+
#
28+
# RULES
29+
#
30+
31+
run: $(TARGET)
32+
@echo ""
33+
@echo "### RUNNING"
34+
@echo -n " "
35+
./$(TARGET)
36+
37+
# linking rule
38+
$(TARGET): $(OBJS)
39+
@echo ""
40+
@echo "### LINKING" $@
41+
@echo -n " "
42+
$(CC) $^ $(LFLAGS) -o $(TARGET)
43+
44+
# compilation rule
45+
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
46+
@echo ""
47+
@echo "### COMPILING" $@
48+
@echo -n " "
49+
$(CC) $(CFLAGS) -I include -c -o $@ $<
50+
51+
# cleanup
3152
clean:
32-
rm -f $(OBJ_NAME) *.o
53+
@echo ""
54+
@echo "### CLEANING"
55+
@echo -n " "
56+
$(RM) -r $(BUILDDIR)/*.o
57+
@echo -n " "
58+
$(RM) -r $(BUILDDIR)/SU/*.o
59+
@echo -n " "
60+
$(RM) -r $(TARGET)
61+
62+
# variable print for debug purposes
63+
debug-%:
64+
@echo $* = $($*)
65+
66+
.PHONY: clean

0 commit comments

Comments
 (0)