MakeJeu+CreationComplet

This commit is contained in:
2024-05-02 17:48:39 +02:00
parent b8267b23ae
commit 56b1837f4f
29 changed files with 48 additions and 40 deletions

View File

@@ -1,56 +1,64 @@
# Variables
# If the first argument is "jeu"...
ifeq (jeu,$(firstword $(MAKECMDGOALS)))
# use the rest as arguments for "jeu"
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
# ...and turn them into do-nothing targets
$(eval $(RUN_ARGS):;@:)
endif
### VARIABLES ###
JC = javac
JCFLAGS = -encoding UTF-8 -implicit:none
JVM = java
SRCDIR = src
BINDIR = bin
MAINCLASS1 = MainJeu
MAINCLASS2 = MainCreation
JVMFLAGS =
SRCDIR = ./src
OUTDIR = ./out
DOCDIR = ./doc
### LISTE DES FICHIERS SOURCE ###
SRCFILES := $(wildcard $(SRCDIR)/*.java)
CLASSFILES := $(patsubst $(SRCDIR)/%.java,$(BINDIR)/%.class,$(SRCFILES))
# Règles de compilation pour les fichiers Java dans le répertoire src
$(BINDIR)/%.class: $(SRCDIR)/%.java | $(BINDIR)
$(JC) -d $(BINDIR) $<
### LISTE DES FICHIERS OBJET ###
# Crée le répertoire bin s'il n'existe pas
$(BINDIR):
mkdir -p $(BINDIR)
CLASSFILES := $(patsubst $(SRCDIR)/%.java,$(OUTDIR)/%.class,$(SRCFILES))
# Règle pour exécuter le premier programme
runJeu: $(CLASSFILES)
$(JVM) -cp $(BINDIR) $(MAINCLASS1)
### REGLES ESSENTIELLES ###
# Règle pour exécuter le deuxième programme
runCreation: $(CLASSFILES)
$(JVM) -cp $(BINDIR) $(MAINCLASS2)
# Compilation de tous les fichiers source
$(OUTDIR)/%.class : $(SRCDIR)/%.java | $(OUTDIR)
@mkdir -p $(OUTDIR)
$(JC) $(JCFLAGS) -cp $(SRCDIR) -d $(OUTDIR) $<
# Règle pour nettoyer les fichiers compilés
clean:
rm -rf $(BINDIR)/*
# Crée le répertoire de sortie s'il n'existe pas
$(OUTDIR):
mkdir -p $(OUTDIR)
# Règle pour créer la documentation
doc:
javadoc -d docs $(SRCDIR)/*.java
# La classe Main dépend de tous les fichiers compilés
$(OUTDIR)/MainJeu.class : $(CLASSFILES)
# Règle pour visualiser la documentation
seedoc:
firefox docs/index.html &
### REGLES OPTIONNELLES ###
# Définir les cibles factices
.PHONY: build runJeu runCreation clean doc seedoc
# Règle pour lancer le programme
jeu : $(OUTDIR)/MainJeu.class
$(JVM) $(JVMFLAGS) -cp $(OUTDIR) MainJeu $(RUN_ARGS)
# Règle par défaut
.DEFAULT_GOAL := build
# Nettoyage des fichiers générés
clean :
-rm -rf $(OUTDIR)
-rm -rf $(DOCDIR)
# Règle pour compiler AutomatiqueActionListener avec ses dépendances
$(BINDIR)/AutomatiqueActionListener.class: $(SRCDIR)/AutomatiqueActionListener.java $(BINDIR)/GenerateurSudoku.class $(BINDIR)/FenetrePrincipale.class $(BINDIR)/Resolveur.class
$(JC) -d $(BINDIR) $<
# Nettoyage et suppression des fichiers générés, y compris la classe Main
mrproper : clean
# Règle pour compiler FenetrePrincipale avec ses dépendances
$(BINDIR)/FenetrePrincipale.class: $(SRCDIR)/FenetrePrincipale.java $(BINDIR)/SaisieGrille.class $(BINDIR)/ReinitialiserActionListener.class
$(JC) -d $(BINDIR) $<
# Génération de la documentation
doc :
javadoc -d $(DOCDIR) $(SRCDIR)/*.java
# Règle pour compiler SaisieGrille avec ses dépendances
$(BINDIR)/SaisieGrille.class: $(SRCDIR)/SaisieGrille.java $(BINDIR)/CaseMouseListener.class $(BINDIR)/GrillePainter.class
$(JC) -d $(BINDIR) $<
### BUTS FACTICES ###
.PHONY : jeu clean mrproper doc
### FIN ###