Initial commit, Makefile created and basic project structure
authorNils Forssén <nilfo359@student.liu.se>
Thu, 2 Nov 2023 09:14:06 +0000 (10:14 +0100)
committerNils Forssén <nilfo359@student.liu.se>
Thu, 2 Nov 2023 09:14:06 +0000 (10:14 +0100)
Makefile [new file with mode: 0644]
README.md [new file with mode: 0644]
src/_main.cc [new file with mode: 0644]
src/_test.cc [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..ecf4368
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,45 @@
+CC := g++
+CCFLAGS := -std=c++17 -Wall -Wextra -pedantic -Weffc++ -Wold-style-cast
+LDFLAGS :=
+
+OBJDIR := build
+EXEDIR := build/exe
+EXE := $(EXEDIR)/game.out
+TEST := $(EXEDIR)/test.out
+
+SRC :=  $(shell find src -type f -name '[^_]*.cc')
+OBJECTS := $(addprefix $(OBJDIR)/, $(SRC:src/%.cc=%.o) ) 
+
+vpath %.cc  src
+
+.PHONY: all clean
+
+all: dir game-target test-target
+
+dir:
+       mkdir -p $(OBJDIR)
+       mkdir -p $(EXEDIR)
+
+game: dir
+       @$(MAKE) --no-print-directory game-target
+
+testing: dir
+       @$(MAKE) --no-print-directory test-target
+
+game-target: $(OBJDIR)/_main.o $(OBJECTS)
+       $(CC) $(LDFLAGS) $^ -o $(EXE)
+
+test-target: $(OBJDIR)/_test.o $(OBJECTS)
+       $(CC) $(LDFLAGS) $^ -o $(TEST)
+
+$(OBJDIR)/%.o: %.cc
+       $(CC) $(CCFLAGS) -c -o $@ $<
+
+run:
+       ./$(EXE)
+
+test:
+       ./$(TEST)
+
+clean:
+       rm -rf $(OBJDIR)/*
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..b85af89
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+# C++ spel: DespYrat
+
+## Kodstruktur
+
+### Filuppdelning
+
+ - All källkod skrivs i `.cc` och `.h` filer och läggs i mappen `src`. 
+ - Alla bilder, ljudfiler osv som används av källkoden läggs i mappen `src/assets`.
+ - All testkod skrivs och körs i `_test.cc`.
+ - Huvudprogrammet skrivs och körs i `_main.cc`.
+ - Byt inte namn på `_main.cc` eller `_test.cc`. (Dessa filer innehåller en `main`-funktioner och länkas av `make` till respektive exekverbar fil.)
+
+För att kompilera och sedan köra programmet används `make`. Nedan anges alla användbara kommandon (notera att en `build` mapp kommer att skapas, denna kan ignoreras). Notera att alla `make`-kommandon körs i mappen där `Makefile` ligger. 
+
+### Kompilering
+
+```
+# Kompilera samtlig kod:
+$ make
+
+# Kompilera endast spelet (utan _test.cc):
+$ make game
+
+# Kompilera endast test (utan _main.cc):
+$ make testing
+```
+
+### Körning
+
+```
+# Kör spelet:
+$ make run
+
+# Kör testfil:
+$ make test
+```
+
+### Rensning
+```
+# Om byggmiljön skulle sluta fungera av någon anledning:
+$ make clean
+```
+
+## Bra att ha länkar
+
+[G-Drive länk](https://drive.google.com/drive/u/0/folders/1-CCc8N8L-TtBs0fGHKvZSzUclVoLB9q4)
+
+[UML-diagram verktyg](https://app.diagrams.net/)
\ No newline at end of file
diff --git a/src/_main.cc b/src/_main.cc
new file mode 100644 (file)
index 0000000..c6db40c
--- /dev/null
@@ -0,0 +1,13 @@
+/**
+ * Huvudfil för spelet.
+ * 
+ * All spelkod bör köras från denna fil och denna fil enbart.
+*/
+
+#include <iostream>
+
+
+int main() {
+    std::cout << "_main.cc" << std::endl;
+    return 0;
+}
\ No newline at end of file
diff --git a/src/_test.cc b/src/_test.cc
new file mode 100644 (file)
index 0000000..032e0f8
--- /dev/null
@@ -0,0 +1,13 @@
+/**
+ * Huvudfil för testning av spelets beståndsdelar.
+ * 
+ * All testkod bör köras från denna fil och denna fil enbart.
+*/
+
+#include <iostream>
+
+
+int main() {
+    std::cout << "_test.cc" << std::endl;
+    return 0;
+}
\ No newline at end of file