Makefile 787 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. CC = g++
  2. PROJECT = ld39
  3. OBJDIR = obj
  4. SRCDIR = src
  5. IDIR = include
  6. OPTS = -std=c++14 -g -Wall -I$(IDIR)
  7. LIBS = -ltmxlite -lsfml-audio -lsfml-graphics -lsfml-window -lsfml-system
  8. SRCS = $(shell find $(SRCDIR) -name '*.cpp')
  9. SRCDIRS = $(shell find . -name '*.cpp' | dirname {} | sort | uniq | sed 's/\/$(SRCDIR)//g' )
  10. OBJS = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS))
  11. .PHONY: default all clean
  12. .PRECIOUS: $(TARGET)
  13. default: $(PROJECT)
  14. all: default
  15. $(PROJECT): buildrepo $(OBJS)
  16. $(CC) $(OBJS) $(LIBS) -o $@
  17. $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
  18. $(CC) $(OPTS) -c $< -o $@
  19. clean:
  20. -rm -f obj/*.o
  21. -rm -f $(TARGET)
  22. run:
  23. -./$(PROJECT)
  24. buildrepo:
  25. @$(call make-repo)
  26. define make-repo
  27. mkdir -p $(OBJDIR)
  28. for dir in $(SRCDIRS); \
  29. do \
  30. mkdir -p $(OBJDIR)/$$dir; \
  31. done
  32. endef