Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. Prog
  2. /include
  3. /include/dir1
  4. /include/dir2
  5. /src
  6. /src/dir1
  7. /src/dir2
  8.  
  9. CC := g++
  10. LD := g++
  11.  
  12. TARGETS := app1 app2
  13. MODULES := mod1 mod2
  14. INC_DIR := $(addprefix include/,$(MODULES))
  15. SRC_DIR := $(addprefix src/,$(MODULES))
  16. BUILD_DIR := $(addprefix build/,$(MODULES))
  17.  
  18. SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp))
  19. OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC))
  20. INCLUDES := -Iinclude $(addprefix -I,$(INC_DIR))
  21.  
  22. vpath %.cpp $(SRC_DIR)
  23.  
  24. define make-goal
  25. $1/%.o: %.cpp
  26. $(CC) $(INCLUDES) -c $$< -o $$@
  27. endef
  28.  
  29. .PHONY: all checkdirs clean
  30.  
  31. all: checkdirs $(TARGETS)
  32.  
  33. $(TARGETS) : %: $(OBJ)
  34. $(CC) $(INCLUDES) -o build/$@ src/$@.cpp $^
  35.  
  36. checkdirs: $(BUILD_DIR)
  37.  
  38. $(BUILD_DIR):
  39. @mkdir -p $@
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement