makefile 600 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. CXX := g++
  2. CXXFLAGS := -Wall -std=c++17
  3. LINKFLAGS :=
  4. YACC := bison
  5. YACCFLAGS := -d
  6. LEX := flex
  7. LEXFLAGS :=
  8. OBJECTS := $(patsubst %.cpp, %.o, $(wildcard *.cpp */*.cpp)) \
  9. parser.o lexer.o
  10. LIBRARIES :=
  11. EXECUTABLE := qlow
  12. all: $(EXECUTABLE)
  13. release: CXXFLAGS += -O3
  14. release: all
  15. debug: CXXFLAGS += -DDEBUGGING -g
  16. debug: all
  17. $(EXECUTABLE): $(OBJECTS)
  18. $(CXX) $^ $(LINKFLAGS) -o $@
  19. %.o: %.cpp
  20. $(CXX) -c -o $@ $< $(CXXFLAGS)
  21. %.cpp: %.y
  22. $(YACC) -o $@ $< $(YACCFLAGS)
  23. %.cpp: %.l parser.cpp
  24. $(LEX) -o $@ $< $(LEXFLAGS)
  25. clean:
  26. rm -f $(EXECUTABLE) *.o parser.cpp parser.hpp lexer.cpp