CURRENT_DIR := $(shell pwd) BIN_DIR := $(CURRENT_DIR)/bin SRC_DIR := $(CURRENT_DIR)/src OBJ_DIR := $(CURRENT_DIR)/build EXE := $(BIN_DIR)/fit SRC := $(wildcard $(SRC_DIR)/*.cpp) OBJ := $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SRC)) CPPFLAGS := -Iinclude -MMD -MP #CFLAGS := -Wsuggest-override -g -Wall -Wextra #CFLAGS := -g -Wall -Wextra `root-config --cflags` CFLAGS := -g -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-function `root-config --cflags` LDFLAGS := -Llib `root-config --glibs` LDLIBS := -lm .PHONY: all clean all: $(EXE) $(EXE): $(OBJ) | $(BIN_DIR) # $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ $(CXX) -std=c++11 $(LDFLAGS) $^ $(LDLIBS) -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR) # $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ # $(CC) $(CPPFLAGS) $(CFLAGS) -shared -fPIC $< -o $@ $(CXX) -std=c++11 $(CPPFLAGS) $(CFLAGS) -shared -fPIC $< -o $@ $(BIN_DIR) $(OBJ_DIR): mkdir -p $@ clean: @$(RM) -rv $(BIN_DIR) $(OBJ_DIR) -include $(OBJ:.o=.d) # The -MMD and -MP flags together generate Makefiles for us. These files will have .d instead of .o as the output # must include the .d makefiles. The "-" at the front suppresses the errors of missing Makefiles. # Initially, all the .d files will be missing, and we don't want those errors to show up.