The simple Makefile generator
```shell Usage: mm [OPTIONS]
Options:
-n, --name
The mm
generates Makefile
template in your project directory.
You can change {PROGRAM}
to your project name.
shell
mm
```Makefile
NAME := {PROGRAM}
SOURCES := main.c \
TESTDIR := test BONUSDIR := bonus SRCDIR := src INCDIR := inc DEPDIR := dep BLDDIR := obj
DEPLIBS :=
DEPDIRS :=
CC := cc
CFLAGS := -Wall -Wextra -Werror
TARGET := $(suffix $(NAME)) CEXT := c OEXT := o INC := -I$(INCDIR) $(addprefix -I$(DEPDIR)/, $(DEPDIRS)) LIB := $(addprefix -l, $(DEPLIBS)) LID := $(addprefix -L$(DEPDIR)/, $(DEPDIRS)) SRCS := $(addprefix $(SRCDIR)/,$(SOURCES)) OBJS := $(patsubst $(SRCDIR)/%,$(BLDDIR)/%,$(SRCS:.$(CEXT)=.$(OEXT)))
all: $(NAME)
bonus: @make -C $(BONUSDIR) @cp $(BONUSDIR)/$(NAME) ./
re: fclean all
directories: @mkdir -p $(BLDDIR)
depend: @for ddir in $(addprefix $(DEPDIR)/, $(DEPDIRS)); do \ make -s -C $$ddir; \ done
clean: @for ddir in $(addprefix $(DEPDIR)/, $(DEPDIRS)); do \ make -s -C $$ddir clean; \ done @$(RM) -rf $(BLDDIR)
fclean: clean @for ddir in $(addprefix $(DEPDIR)/, $(DEPDIRS)); do \ make -s -C $$ddir fclean; \ done @$(RM) -rf $(NAME)
$(NAME): $(OBJS) @for ddir in $(addprefix $(DEPDIR)/, $(DEPDIRS)); do \ make -s -C $$ddir; \ done ifeq ($(TARGET), .a) $(AR) -rc $@ $^ else $(CC) $(SANITIZE) $(DEBUG) $(INC) -o $(NAME) $^ $(LID) $(LIB) endif
$(BLDDIR)/%.$(OEXT): $(SRCDIR)/%.$(CEXT) @mkdir -p $(dir $@) $(CC) $(CFLAGS) $(SANITIZE) $(DEBUG) $(INC) -c -o $@ $<
.PHONY: all re clean fclean bonus directories depend ```
shell
mm --name hello
```Makefile
NAME := hello ```
shell
mm --name hello --kind=bin
```Makefile
NAME := hello ```
shell
mm --name hello --kind=lib
```Makefile
NAME := libhello.a ```