Makefile 1.2 KB

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