]> git.dkaiser.de - 42/so_long.git/commitdiff
Setup Makefile
authorDominik Kaiser <dkaiser@1-C-7.42heilbronn.de>
Wed, 8 May 2024 12:35:09 +0000 (14:35 +0200)
committerDominik Kaiser <dkaiser@1-C-7.42heilbronn.de>
Wed, 8 May 2024 12:35:09 +0000 (14:35 +0200)
Makefile

index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..073316f6910a85d8c6b1bb00f26e8a6ffe913eb7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -0,0 +1,47 @@
+NAME   :=      so_long
+
+CC             =       cc
+CFLAGS =       -Wall -Wextra -Werror
+HEADERS        =       -Iinclude -Ilibft
+LIBS   =       -Llibft -lft
+
+VPATH  :=      src
+SRC            =       main.c
+
+OBJ_DIR        :=      obj
+OBJ            :=      $(addprefix $(OBJ_DIR)/, $(SRC:%.c=%.o))
+
+
+all: $(NAME)
+
+$(NAME): $(OBJ) | libft
+       @$(CC) $(CFLAGS) $(HEADERS) $^ -o $@ $(LIBS)
+       @echo "[$(NAME)] Created binary."
+
+$(OBJ_DIR)/%.o: %.c
+       @if [ ! -d "$(OBJ_DIR)" ]; then \
+               mkdir $(OBJ_DIR); \
+       fi
+       @$(CC) $(CFLAGS) $(HEADERS) -c $< -o $@
+       @echo "[$(NAME)] Compiled $<."
+
+libft:
+       @make -C libft
+
+clean:
+       @make -C libft clean
+       @if [ -d "$(OBJ_DIR)" ]; then \
+               rm -rf $(OBJ_DIR); \
+               echo "[$(NAME)] Removed object files."; \
+       fi
+
+fclean: clean
+       @make -C libft fclean
+       @if [ -f "$(NAME)" ]; then \
+               rm -f $(NAME); \
+               echo "[$(NAME)] Removed binary."; \
+       fi
+
+re:    fclean all
+
+.PHONY: all libft clean fclean re