-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
71 lines (57 loc) · 2.75 KB
/
Makefile
File metadata and controls
71 lines (57 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Ensimag 2A POO - TP 2018/19
# ============================
#
# Ce Makefile permet de compiler le test de l'ihm en ligne de commande.
# Alternative (recommandee?): utiliser un IDE (eclipse, netbeans, ...)
# Le but est ici d'illustrer les notions de "classpath", a vous de l'adapter
# a votre projet.
#
# Organisation:
# 1) Les sources (*.java) se trouvent dans le repertoire src
# Les classes d'un package toto sont dans src/toto
# Les classes du package par defaut sont dans src
#
# 2) Les bytecodes (*.class) se trouvent dans le repertoire build
# La hierarchie des sources (par package) est conservee.
# L'archive build/gui.jar contient les classes de l'interface graphique
#
# Compilation:
# Options de javac:
# -d : repertoire dans lequel sont places les .class compiles
# -classpath : repertoire dans lequel sont cherches les .class deja compiles
# -sourcepath : repertoire dans lequel sont cherches les .java (dependances)
all: testInvader testLecture buildScenarios buildStrategies
.PHONY: clean exeInvader exeLecture scenario0 scenario1 strategieElem strategieAvancee strategieAmelioree \
testInvader testLecture buildScenarios buildStrategies
testInvader:
javac -d build -classpath build/gui.jar -sourcepath src src/TestInvader.java
testLecture:
javac -d build -cp build/gui.jar -sourcepath src src/TestLecteurDonnees.java
#Plusieurs dépendances dans le même target
#Si vous regardez en dessous, chaque scenario/strategie ne demande que son .class et pas tout le target.
#Si on ne fait pas ça, on rebuild à chaque fois (ce qui est long)
buildStrategies build/StrategieElementaire.class build/StrategieAvancee.class build/StrategieMieux.class: src/Strategies.java
javac -d build -cp build/gui.jar -sourcepath src src/Strategies.java
buildScenarios build/Scenario0.class build/Scenario1.class: src/Scenarios.java
javac -d build -cp build/gui.jar -sourcepath src src/Scenarios.java
# Execution:
# on peut taper directement la ligne de commande :
# > java -classpath build:build/gui.jar TestInvader
# ou bien lancer l'execution en passant par ce Makefile:
# > make exeInvader
exeInvader: testInvader
java -classpath build:build/gui.jar TestInvader
exeLecture: testLecture
java -classpath build:build/gui.jar TestLecteurDonnees cartes/carteSujet.map
scenario0: build/Scenario0.class
java -cp build:build/gui.jar Scenario0 $(carte)
scenario1: build/Scenario1.class
java -cp build:build/gui.jar Scenario1 $(carte)
strategieElem: build/StrategieElementaire.class
java -cp build:build/gui.jar StrategieElementaire $(carte)
strategieAvancee: build/StrategieAvancee.class
java -cp build:build/gui.jar StrategieAvancee $(carte)
strategieAmelioree: build/StrategieMieux.class
java -cp build:build/gui.jar StrategieMieux $(carte)
clean:
rm -rf build/*.class