-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile
66 lines (53 loc) · 1.79 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
CC = gcc
CFLAGS = -Iinclude -Wall -Wextra
SRCDIR = src
INCDIR = include
BINDIR = bin
OBJDIR = obj
# Fontes “principais” (excluindo o teste)
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SOURCES))
# Executável principal
EXECUTABLE = $(BINDIR)/ConversorUnidades
# ------------------------------------------------
# Alvo "all": compila o programa principal
# ------------------------------------------------
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) | $(BINDIR)
$(CC) $(OBJECTS) -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
# Cria os diretórios de binários/objetos, caso não existam
$(BINDIR) $(OBJDIR):
mkdir -p $@
# ------------------------------------------------
# Alvo "clean": remove diretórios de binários/objetos
# ------------------------------------------------
clean:
rm -rf $(OBJDIR) $(BINDIR)
# ------------------------------------------------
# TESTES
#
# 1) Defina o(s) arquivo(s) de teste
# 2) Gere o objeto do teste
# 3) Linke gerando o executável do teste
# 4) Crie um alvo "test" que:
# - Compila o teste
# - Executa o teste
# ------------------------------------------------
TEST_SRC = tests/testConversorPotencia.c
TEST_OBJ = $(OBJDIR)/testConversorPotencia.o
TEST_EXE = $(BINDIR)/testConversorPotencia
# 1) Compila o arquivo de teste (gera .o)
$(TEST_OBJ): $(TEST_SRC) | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
# 2) Linka (une) o objeto do teste + objeto(s) da potência
# Adicione aqui outros .o referentes aos testes
$(TEST_EXE): $(TEST_OBJ) $(OBJDIR)/conversorPotencia.o | $(BINDIR)
$(CC) $(CFLAGS) $^ -o $@
# 3) Alvo "test": compila e executa o teste
test: $(TEST_EXE)
@echo "==> Executando testes..."
@./$(TEST_EXE)
@echo "==> Testes finalizados com sucesso."
.PHONY: all clean test