-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
31 lines (22 loc) · 1.02 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
CXX = g++
CXXFLAGS = -std=c++20 -O3
SRC_DIR = src
HPP_DIR = include
OBJ_DIR = out
all: program
program: $(OBJ_DIR)/main.o $(OBJ_DIR)/ll1_parser.o $(OBJ_DIR)/symbol_table.o $(OBJ_DIR)/lexer.o $(OBJ_DIR)/grammar.o
$(CXX) $(CXXFLAGS) -o ll1 $^ /usr/lib/libboost_regex.a /usr/lib/libboost_program_options.a
$(OBJ_DIR)/main.o: $(SRC_DIR)/main.cpp $(HPP_DIR)/grammar.hpp $(OBJ_DIR)/ll1_parser.o
$(CXX) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/grammar.o: $(SRC_DIR)/grammar.cpp $(HPP_DIR)/grammar.hpp $(OBJ_DIR)/symbol_table.o
$(CXX) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/symbol_table.o: $(SRC_DIR)/symbol_table.cpp $(HPP_DIR)/symbol_table.hpp
$(CXX) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/lexer.o: $(SRC_DIR)/lexer.cpp $(HPP_DIR)/lexer.hpp
$(CXX) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/ll1_parser.o: $(SRC_DIR)/ll1_parser.cpp $(HPP_DIR)/ll1_parser.hpp $(OBJ_DIR)/symbol_table.o $(OBJ_DIR)/lexer.o $(OBJ_DIR)/grammar.o
$(CXX) $(CXXFLAGS) -c $< -o $@
format:
@find . -name "*.cpp" -o -name "*.hpp" | xargs clang-format -i
clean:
rm -f ll1 $(OBJ_DIR)/*.o