Makefile 813 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. CC = gcc
  2. CXX = g++
  3. MKDIR = mkdir -p
  4. RM = rm -r
  5. CPPFLAGS += -g -O2
  6. CFLAGS +=
  7. CXXFLAGS += -std=c++11
  8. INCDIR = include
  9. SRCDIR = src
  10. LIBDIR = lib
  11. BINDIR = bin
  12. TARGET = test
  13. ifeq ($(OS),Windows_NT)
  14. TARGET := $(addsuffix .exe, $(TARGET))
  15. endif
  16. INCFLAGS += -I.
  17. INCFLAGS += $(addprefix -I, $(INCDIR))
  18. CPPFLAGS += $(INCFLAGS)
  19. LDFLAGS += $(addprefix -L, $(LIBDIR))
  20. LDFLAGS += -lpthread
  21. DIRS += . $(SRCDIR) test
  22. SRCS += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.c $(dir)/*.cc $(dir)/*.cpp))
  23. #OBJS := $(patsubst %.cpp, %.o, $(SRCS))
  24. OBJS := $(addsuffix .o, $(basename $(SRCS)))
  25. $(info DIRS=$(DIRS))
  26. $(info SRCS=$(SRCS))
  27. $(info OBJS=$(OBJS))
  28. all: prepare $(TARGET)
  29. prepare:
  30. $(MKDIR) $(BINDIR)
  31. $(TARGET): $(OBJS)
  32. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $^ -o $(BINDIR)/$@ $(LDFLAGS)
  33. clean:
  34. $(RM) $(OBJS)
  35. $(RM) $(BINDIR)