Add a Makefile and a test main.cpp
authorLukas Jiriste <ljiriste@student.42prague.com>
Fri, 25 Oct 2024 14:36:16 +0000 (16:36 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Fri, 25 Oct 2024 14:36:16 +0000 (16:36 +0200)
ex03/Makefile [new file with mode: 0644]
ex03/main.cpp [new file with mode: 0644]

diff --git a/ex03/Makefile b/ex03/Makefile
new file mode 100644 (file)
index 0000000..2f960ab
--- /dev/null
@@ -0,0 +1,67 @@
+CC := clang++
+CFLAGS = -std=c++98 -Wall -Wextra -Werror -Wpedantic
+
+DEP_GEN = g++ -MM
+
+ifneq ("$(wildcard .debug)","")
+       CFLAGS += -g -fno-limit-debug-info
+endif
+
+RM := rm -f
+
+INCDIR := inc
+INCDIR += $(addsuffix /inc, $(SUBPROJECTS));
+ifneq ($(INCLUDE),)
+       INCLUDE := $(addprefix -I, $(INCDIR))
+endif
+
+SRCDIR := .
+
+SOURCES :=     main.cpp                        \
+                       AMateria.cpp            \
+                       Ice.cpp                         \
+                       Cure.cpp                        \
+                       MateriaSource.cpp       \
+                       Character.cpp           \
+
+SOURCES := $(addprefix $(SRCDIR)/, $(SOURCES))
+
+OBJECTS := $(SOURCES:.cpp=.o)
+
+NAME := materia
+
+all : $(NAME)
+
+debug : .debug
+       $(MAKE) all
+
+nodebug :
+       $(RM) .debug
+       $(MAKE) re
+
+.% :
+       $(MAKE) fclean
+       touch $@
+
+$(NAME) : $(OBJECTS)
+       $(CC) $(CFLAGS) -o $@ $^ $(LINKS)
+
+%.o : %.cpp
+       $(CC) $(CFLAGS) -o $@ -c $< $(INCLUDE)
+
+clean :
+       $(RM) $(OBJECTS)
+
+fclean : clean
+       $(RM) $(NAME)
+
+re : fclean
+       $(MAKE) all
+
+depend: .depend
+
+.depend: $(SOURCES)
+       rm -f $@
+       $(DEP_GEN) $^ > $@
+
+include .depend
diff --git a/ex03/main.cpp b/ex03/main.cpp
new file mode 100644 (file)
index 0000000..3518a3b
--- /dev/null
@@ -0,0 +1,28 @@
+#include "AMateria.h"
+#include "Ice.h"
+#include "Cure.h"
+#include "IMateriaSource.h"
+#include "MateriaSource.h"
+#include "ICharacter.h"
+#include "Character.h"
+
+int main()
+{
+       IMateriaSource* src = new MateriaSource();
+       ICharacter*             me = new Character("me");
+       ICharacter*             bob = new Character("bob");
+       AMateria*               tmp;
+
+       src->learnMateria(new Ice());
+       src->learnMateria(new Cure());
+       tmp = src->createMateria("ice");
+       me->equip(tmp);
+       tmp = src->createMateria("cure");
+       me->equip(tmp);
+       me->use(0, *bob);
+       me->use(1, *bob);
+       delete bob;
+       delete me;
+       delete src;
+       return (0);
+}