# [--------------------DIRECTORIES--------------------] # SRC_DIR is the source directory # OBJ_DIR is the object directory # INC_DIR is the header directory SRC_DIR := src OBJ_DIR := obj INC_DIR := inc # [--------------------COMPILE & RUN--------------------] # CXX is the keyword to compile .cpp src files # WFLAG is a flag to detect all the warnings # OFLAG is the flag to rename the output of the compiler # TARGET is the name of the output # INCLUDE add to g++ path the custom include path CXX := g++ WFLAGS := -Wall OFLAG := -o TARGET := main INCLUDE := -I $(INC_DIR) # [--------------------FUNCTION--------------------] # SRCS extract all file in src/ # FILES extract the name of the file # OBJS concat obj/ + FILES + .o SRCS := $(shell find $(SRC_DIR) -name "*.cpp") FILES := $(notdir $(basename $(SRCS))) OBJS := $(addprefix $(OBJ_DIR)/,$(addsuffix .o,$(FILES))) #--------------------------------------------------- all: <<<<<<< HEAD all: ======= #--------------------------------------------------- >>>>>>> b5b04b6 (implement my first regexp) execute: linking @ echo execute... @ ./$(TARGET) @ echo ...terminate #--------------------------------------------------- linking: $(OBJS) @ echo linking @ $(CXX) $(WFLAGS) $(OFLAG) $(TARGET) $(OBJS) #--------------------------------------------------- $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(OBJ_DIR) @ echo compile $< @ $(CXX) $(WFLAGS) -c $< $(OFLAG) $@ $(INCLUDE) #--------------------------------------------------- $(OBJ_DIR): mkdir -p $(OBJ_DIR) #--------------------------------------------------- clean: @ rm -rf $(OBJ) #--------------------------------------------------- # random git command # lista file git_list: git ls-tree -r master --name-only # push git_push: git push # commint add message _commit: git_commit git_push git_commit: @ read -p "Enter git message: " msg; \ git commit -am "$$msg" # remove a file only on git, not local _remove: git_rm git_push git_rm: git rm --cached $(FILE) git_reset: _dump _reset _reset: git reset --hard HEAD^ # awk work with regexp # the expression is $1 ~ /commit/ { print $2 }: # $N -> nth word # ~ -> when the operand coincide is true # /word/: -> the word appears # translate: write only the second word # where appears "commit" in first field _dump: @ git log | awk '$$1 ~ /commit/ { print $$2 }' > dump_git_tree.txt # difference between local and git git_diff: git diff