SRC_DIRS := src C_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.c)) CXX_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) C_OBJS := ${C_SRCS:.c=.o} CXX_OBJS := ${CXX_SRCS:.cpp=.o} OBJS := $(C_OBJS) $(CXX_OBJS) INCLUDE_DIRS := include LIBRARY_DIRS := LIBRARIES := prog_NAME := experiment prog_DIR := bin prog_FULL := $(prog_DIR)/$(prog_NAME) prog_SRC_DIRS := experimentation prog_C_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.c)) prog_CXX_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) prog_C_OBJS := ${prog_C_SRCS:.c=.o} prog_CXX_OBJS := ${prog_CXX_SRCS:.cpp=.o} prog_OBJS := $(prog_C_OBJS) $(prog_CXX_OBJS) prog_INCLUDE_DIRS := prog_LIBRARY_DIRS := prog_LIBRARIES := all_OBJS := $(OBJS) $(prog_OBJS) $(test_OBJS) DEP := $(all_OBJS:%.o=%.d) CXXFLAGS += -std=c++11 CXXFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library)) .PHONY: experiment src clean experiment: CXXFLAGS += $(foreach includedir,$(prog_INCLUDE_DIRS),-I$(includedir)) experiment: LDFLAGS += $(foreach librarydir,$(prog_LIBRARY_DIRS),-L$(librarydir)) experiment: LDFLAGS += $(foreach library,$(prog_LIBRARIES),-l$(library)) experiment: $(prog_FULL) ./$(prog_FULL) $(prog_FULL): $(prog_OBJS) $(OBJS) $(LINK.cc) $^ -o $@ -include $(DEP) %.o: %.cpp $(CXX) $(CXXFLAGS) -MMD -c $< -o $@ clean: @- $(RM) $(prog_FULL) @- $(RM) $(prog_OBJS) @- $(RM) $(OBJS) @- $(RM) $(DEP)