From b62dcbbf464dbd137ab4ec6c54833c4eca5c155b Mon Sep 17 00:00:00 2001 From: sehl Date: Fri, 24 Oct 2025 00:54:17 +0200 Subject: [PATCH] MAJ du MAKEFILE --- Makefile | 85 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 70 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index bf64102..5d699bc 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,75 @@ -SRC=src -BUILD=build -LIB=lib -JAR=$(LIB)/mariadb-java-client-3.5.6.jar -MAIN=fr.iutfbleau.papillon.Main -compile: - @echo "=== Compilation du projet ===" - @if not exist "$(BUILD)" mkdir "$(BUILD)" - javac -d $(BUILD) -classpath "$(JAR)" -sourcepath $(SRC) $(SRC)/fr/iutfbleau/papillon/Main.java + ==== Paramètres du projet ==== +APP_NAME := papillon +MAIN_CLASS := fr.iutfbleau.papillon.Start # <-- change si ton main est ailleurs -run: - @echo "=== Exécution du programme ===" - java -classpath "$(BUILD);$(JAR)" $(MAIN) +SRC_DIR := src +BUILD_DIR:= build +DIST_DIR := dist +RES_DIR := res +LIB_DIR := lib + +Driver MariaDB +DRIVER_JAR := $(LIB_DIR)/mariadb + +Séparateur de classpath selon OS +ifeq ($(OS),Windows_NT) + SEP := ; +else + SEP := : +endif + +Liste des sources et classes correspondantes +SOURCES := $(shell find $(SRC_DIR) -name ".java") +CLASSES := $(SOURCES:$(SRC_DIR)/%.java=$(BUILD_DIR)/%.class) + +==== Règles ==== +.PHONY: all compile jar run run-jar clean rebuild + +all: compile + +$(BUILD_DIR): + @mkdir -p $(BUILD_DIR) + +$(DIST_DIR): + @mkdir -p $(DIST_DIR) + +Compilation de chaque .java vers build/ en respectant les packages +$(BUILD_DIR)/%.class: $(SRC_DIR)/%.java | $(BUILD_DIR) + @mkdir -p $(dir $@) + javac -classpath "$(DRIVER_JAR)" -d $(BUILD_DIR) $< + +Compile tout + copie des ressources si dossier res/ existe +compile: $(CLASSES) + @if [ -d "$(RES_DIR)" ]; then \ + echo "Copie des ressources..."; \ + cp -r $(RES_DIR)/ $(BUILD_DIR)/; \ + fi + @echo "==> Compilation OK" + +MANIFEST avec Main-Class et Class-Path (référence le driver) +MANIFEST.MF: + @echo "Manifest-Version: 1.0" > MANIFEST.MF + @echo "Main-Class: $(MAIN_CLASS)" >> MANIFEST.MF + @echo "Class-Path: ../$(DRIVER_JAR)" >> MANIFEST.MF + +Construction du JAR +jar: compile MANIFEST.MF | $(DIST_DIR) + jar cfm $(DIST_DIR)/$(APP_NAME).jar MANIFEST.MF -C $(BUILD_DIR) . + @echo "==> JAR créé: $(DIST_DIR)/$(APP_NAME).jar" + +Exécution directe depuis build/ + driver sur le classpath +run: compile + java -classpath "$(BUILD_DIR)$(SEP)$(DRIVER_JAR)" $(MAIN_CLASS) + +Exécution du .jar (le MANIFEST référence le driver dans lib/) +run-jar: jar + java -jar "$(DIST_DIR)/$(APP_NAME).jar" clean: - @echo "=== Nettoyage du dossier build ===" - @if exist "$(BUILD)" rmdir /s /q "$(BUILD)" + rm -rf $(BUILD_DIR) $(DIST_DIR) MANIFEST.MF -rebuild: clean compile +rebuild: clean all + +doc: + javadoc -d doc/ src/*.java \ No newline at end of file