-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
37 lines (27 loc) · 1.03 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
# Opcións de compilación: mostra todos os warnings (-Wall)
CC=gcc -Wall
# Carpeta das cabeceiras
HEADER_FILES_DIR = .
# Opcións de compilación: indica onde están os ficheiros .h
INCLUDES = -I $(HEADER_FILES_DIR)
# Nome do executable
OUTPUT = analizadorLexicoGo
# Ficheiros .h
LIB_HEADERS = definicions.h analizadorLexico.h analizadorSintactico.h sistemaEntrada.h taboaSimbolos.h avl.h xestionErros.h
# Ficheiros .c
SRCS = main.c analizadorLexico.c analizadorSintactico.c sistemaEntrada.c taboaSimbolos.c avl.c xestionErros.c
# Ficheros .o: todos os .o cun análogo .c en SRCS
OBJS = $(SRCS:.c=.o)
# REGRA 1: xera o executable, dependencia dos .o
# Tras xeralos borra os .o
$(OUTPUT): $(OBJS)
$(CC) -o $(OUTPUT) $(OBJS)
rm *.o
# REGRA 2: xera os .o cando é necesario, dependencia dos .c e .h
# $@ é o nome do ficheiro que se xera coa regra (.o)
# $< é o nome do primeiro prerrequisito (o arquivo .c cuxo .o se está xerando)
%.o: %.c $(LIB_HEADERS)
$(CC) -c -o $@ $< $(INCLUDES)
# REGRA 3: borra o executable
clean:
rm -f $(OUTPUT)