-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
68 lines (54 loc) · 1.49 KB
/
Makefile
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
67
SOURCES=mainTest.cpp
#Tilføjer stinavn vha. 'addprefix'
OBJECTS=$(addprefix $(OBJ_DIR)/, $(SOURCES:.cpp=.o))
DEPS=$(addprefix $(OBJ_DIR)/, $(SOURCES:.cpp=.d))
EXE=Test
CXXFLAGS=-I.
# Processor
ARCH?=x86-64
# Vha. 'ifeq' tjekker vi hvad ARCH er -altså om processoren der
# kompileres til er x86-64 eller Rpi
# OBJ_DIR og BIN_DIR er mapper til henholdsvis '.o'-filer og binære filer (=eksekveringsfiler)
ifeq (${ARCH},x86-64)
CXX := g++
OBJ_DIR := obj/x86-64
BIN_DIR := bin/x86-64
endif
ifeq (${ARCH},arm)
CXX := arm-rpizw-g++
OBJ_DIR := obj/arm
BIN_DIR := bin/arm
endif
# Lav programfilen
$(BIN_DIR)/$(EXE): $(BIN_DIR) $(DEPS) $(OBJECTS)
$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) -lpthread
# Kompiler objektfil for hver sourcefil uden at linke
$(OBJ_DIR)/%.o: %.cpp $(OBJ_DIR)
$(CXX) $(CXXFLAGS) -c $< -o $@
# Tilføj dependencies til de enkelte '.d'-filer
$(OBJ_DIR)/%.d: %.cpp $(OBJ_DIR)
$(CXX) -MT$@ -MM $(CXXFLAGS) $< > $@
$(CXX) -MT$(@:.d=.o) -MM $(CXXFLAGS) $< >> $@
# Opret directories
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
#Slet alt ('*') inde i mapperne
clean:
rm -f $(OBJ_DIR)/*
rm -f $(BIN_DIR)/*
format: $(SOURCES:.cpp=.format)
%.format: %.cpp
@echo "Formatting file '$'"...
@clang-format -i $<
@exho "" > $@
tidy: $(SOURCES:.cpp=.tidy)
%.tidy: %.cpp
@echo "Tidying file '$<'"
@clang-tidy $< -- $(CXXFLAGS)
@echo "" > $@
ifneq ($(filter-out clean format tidy,$(MAKECMDGOALS)),)
# Sikrer at vi får indlæst de enkelte '.d'-makefiler
-include $(DEPS)
endif