Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Prog
- /include
- /include/dir1
- /include/dir2
- /src
- /src/dir1
- /src/dir2
- CC := g++
- LD := g++
- TARGETS := app1 app2
- MODULES := mod1 mod2
- INC_DIR := $(addprefix include/,$(MODULES))
- SRC_DIR := $(addprefix src/,$(MODULES))
- BUILD_DIR := $(addprefix build/,$(MODULES))
- SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp))
- OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC))
- INCLUDES := -Iinclude $(addprefix -I,$(INC_DIR))
- vpath %.cpp $(SRC_DIR)
- define make-goal
- $1/%.o: %.cpp
- $(CC) $(INCLUDES) -c $$< -o $$@
- endef
- .PHONY: all checkdirs clean
- all: checkdirs $(TARGETS)
- $(TARGETS) : %: $(OBJ)
- $(CC) $(INCLUDES) -o build/$@ src/$@.cpp $^
- checkdirs: $(BUILD_DIR)
- $(BUILD_DIR):
- @mkdir -p $@
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement