# project_natal/Makefile # Compiler-Definition CXX = g++ # Compiler-Flags für maximale Hardware-Zerstörung (CPU-Optimierung) # -O3: Maximale Optimierungsstufe für Geschwindigkeit # -fopenmp: Aktiviert die Multi-Core-Parallelisierung im C++ Kernel # -march=native: Optimiert den Code exakt für deine lokale CPU (AVX2/AVX512) # -ffast-math: Erlaubt dem Compiler aggressive mathematische Abkürzungen CXXFLAGS = -O3 -fopenmp -march=native -ffast-math -std=c++17 -Wall # Pfade und Verzeichnisse SRC_DIR = src OBJ_DIR = obj TARGET = project_natal_engine # Sourcen und Objekte automatisch ermitteln SRCS = $(SRC_DIR)/main.cpp OBJS = $(OBJ_DIR)/main.o # Standard-Target: Baut das gesamte Projekt all: $(TARGET) # Linker-Schritt: Erzeugt das ausführbare Binärfile $(TARGET): $(OBJS) @echo "[Natal - Linker] Verknüpfe Binärdatei mit OpenMP-Support..." $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS) @echo "==================================================" @echo " PROJECT NATAL ERFOLGREICH KOMPILIERT! " @echo " Starte die Engine mit: ./$(TARGET) " @echo "==================================================" # Compiler-Schritt: Kompiliert die C++ Quelldateien in Objektdateien $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp @mkdir -p $(OBJ_DIR) @echo "[Natal - Compiler] Kompiliere $< mit maximaler Optimierung..." $(CXX) $(CXXFLAGS) -c $< -o $@ # Clean-Target: Bereinigt das Verzeichnis von alten Build-Dateien clean: @echo "[Natal - Clean] Entferne Objektdateien und Binärfiles..." rm -rf $(OBJ_DIR) $(TARGET) @echo "[Natal - Clean] Bereinigt." # Hilfs-Target: Kompiliert und startet das Programm sofort run: all @echo "\n[Natal - Launch] Starte Inferenz-Triebwerk...\n" ./$(TARGET) .PHONY: all clean run