From 332b4ff080440cb21917507a20420b03f34ebfa6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nils=20Forss=C3=A9n?= Date: Thu, 2 Nov 2023 10:14:06 +0100 Subject: [PATCH 1/1] Initial commit, Makefile created and basic project structure --- Makefile | 45 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/_main.cc | 13 +++++++++++++ src/_test.cc | 13 +++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100644 src/_main.cc create mode 100644 src/_test.cc diff --git a/Makefile b/Makefile new file mode 100644 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 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 index 0000000..c6db40c --- /dev/null +++ b/src/_main.cc @@ -0,0 +1,13 @@ +/** + * Huvudfil för spelet. + * + * All spelkod bör köras från denna fil och denna fil enbart. +*/ + +#include + + +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 index 0000000..032e0f8 --- /dev/null +++ b/src/_test.cc @@ -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 + + +int main() { + std::cout << "_test.cc" << std::endl; + return 0; +} \ No newline at end of file -- 2.30.2