diff --git a/.gitignore b/.gitignore
index a5e439609c2154d55a489b9d93eb0beac2a37603..3902db19af7e13172feab5127a17d23203cdd382 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,7 +79,6 @@ CMakeCache.txt
 CMakeFiles
 CMakeScripts
 Testing
-Makefile
 cmake_install.cmake
 install_manifest.txt
 compile_commands.json
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5da9f32eeab1eac6f4e40a4e88697814f70ab
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,25 @@
+# For implementation
+CC=gcc -std=c99
+CFLAGS=-I./src -I./include
+LIB=
+OBJ=./src/utils.o
+
+%.o: %.c $(DEPS)
+	$(CC) -c -o $@ $< $(CFLAGS)
+
+mysh: $(OBJ)
+	$(CC) -o $@ $^ ./src/main.c $(CFLAGS)
+
+# For testing
+CXX=g++ -std=c++11
+TESTING_FLAGS=-I./tests/src -I./tests/include $(CFLAGS)
+TESTING_LIB=-lgtest -lgtest_main -L./tests/lib -lpthread $(LIB)
+TESTING_SRC=./tests/src/command_parsing_test.cc
+TESTING_EXE=mysh-test
+
+test: $(OBJ)
+	$(CXX) $(TESTING_FLAGS) -o $(TESTING_EXE) $(TESTING_SRC) $(OBJ) $(TESTING_LIB)
+	./$(TESTING_EXE)
+
+clean:
+	rm -f $(TESTING_EXE) $(OBJ) mysh ./src/main.o