Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4486 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Makefile

n°640199
Giz
Posté le 22-02-2005 à 12:53:35  profilanswer
 

Voici mon makefile, il marche si j'enleve la regle :
 
#execute program
run: ${MAINFILE}
cd class;java $^
 
car si je fais : make run dans une console, il me dit pas de regle pour la cible run. Je ne comprends pas pourquoi, que faire ? d'ou ca vient ?  :??:  
 


#compiler option
CFLAGS = -g
#package list
P1 = search
P11 = search/basic
P12 = search/problem
#.class file with main class
MAINFILE = ${P1}/Main
 
#source files
SRC =\
${P1}/Main.java\
${P11}/Heuristic.java ${P11}/Blind.java ${P11}/BasicSearch.java ${P11}/AbstractSearch.java\
${P12}/Puzzle.java ${P12}/Queens.java
 
#target + rules
all: normal
 
#standard compilation
normal: ${SRC}
 javac -cp class -d class ${CFLAGS} $^
#print warning
verbose: ${SRC}
 javac -Xlint -cp class -d class ${CFLAGS} $^
#execute program
run: ${MAINFILE}
 cd class;java $^
#build javadoc
jdoc: ${SRC}
 javadoc -d ./javadoc $^
#delete .class generated files
clean:
 rm -Rf class/*
#delete .class generated files plus all the javadoc
cleanall:
 rm -Rf class/*;rm -Rf javadoc/*
 

mood
Publicité
Posté le 22-02-2005 à 12:53:35  profilanswer
 

n°640215
western
AJMM
Posté le 22-02-2005 à 13:18:26  profilanswer
 

[quote=640199,0,1,19385]
Voici mon makefile, il marche si j'enleve la regle :
 
#execute program
run: ${MAINFILE}
cd class;java $^
 
car si je fais : make run dans une console, il me dit pas de regle pour la cible run. Je ne comprends pas pourquoi, que faire ? d'ou ca vient ?  :??:  
 


#compiler option
CFLAGS = -g
#package list
P1 = search
P11 = search/basic
P12 = search/problem
#.class file with main class
MAINFILE = ${P1}/Main
 
#source files
SRC =\


[/quote]
je pense qu'il faut mettre un espace avant '\'
[quote=640199,0,1,19385]


${P1}/Main.java\
${P11}/Heuristic.java ${P11}/Blind.java ${P11}/BasicSearch.java ${P11}/AbstractSearch.java\
${P12}/Puzzle.java ${P12}/Queens.java
 
#target + rules
all: normal
 
#standard compilation
normal: ${SRC}
 javac -cp class -d class ${CFLAGS} $^
#print warning
verbose: ${SRC}
 javac -Xlint -cp class -d class ${CFLAGS} $^
#execute program
run: ${MAINFILE}
 cd class;java $^
#build javadoc
jdoc: ${SRC}
 javadoc -d ./javadoc $^
#delete .class generated files
clean:
 rm -Rf class/*
#delete .class generated files plus all the javadoc
cleanall:
 rm -Rf class/*;rm -Rf javadoc/*
 


[/quote]
Elle est où la regle pour fabriquer ${MAINFILE} car telles que tu as défini les choses, make ne sait pas fabriquer ton ${MAINFILE} et par conséquence, plante


Message édité par western le 22-02-2005 à 13:19:54
n°640218
Giz
Posté le 22-02-2005 à 13:30:53  profilanswer
 

[quote=640215,0,2,66993]je pense qu'il faut mettre un espace avant '\'
 
Elle est où la regle pour fabriquer ${MAINFILE} car telles que tu as défini les choses, make ne sait pas fabriquer ton ${MAINFILE} et par conséquence, plante[/quote]
 
Ben, j'ai spécifié les commandes a faire : cd class;java $^  
 
C'est pas bon  :??:

n°640222
western
AJMM
Posté le 22-02-2005 à 13:47:51  profilanswer
 

non, tu as demandé une dépendance sur ${MAINFILE}, i.e. make va chercher à fabriquer ton truc mais il n'a pas de regles... d'où le problème...
 
La solution: au lieu d'avoir une dépendance sur ${MAINFILE}, une dépendence sur normal

n°640225
Giz
Posté le 22-02-2005 à 13:50:21  profilanswer
 

[quote=640222,0,4,66993]non, tu as demandé une dépendance sur ${MAINFILE}, i.e. make va chercher à fabriquer ton truc mais il n'a pas de regles... d'où le problème...
 
La solution: au lieu d'avoir une dépendance sur ${MAINFILE}, une dépendence sur normal[/quote]
 
Ce serait quoi a mettre exactement pour pouvoir faire mon 'make run'
et que ca lance la commande directe 'java ${MAINFILE}'.  :sweat:


Message édité par Giz le 22-02-2005 à 13:50:29
n°640228
western
AJMM
Posté le 22-02-2005 à 13:52:32  profilanswer
 


#execute program
run: normal
 cd class && java $^  

n°640233
xouille38
Posté le 22-02-2005 à 13:55:28  profilanswer
 

[quote=640218,0,3,19385]Ben, j'ai spécifié les commandes a faire : cd class;java $^  
 
C'est pas bon  :??:[/quote]
run: ${MAINFILE}  
 
ici ${MAINFILE} est un prérequis or il s'agit d'un répertoire (déja ça make ne doit pas le comprendre). Quand tu fais make run il contrôle si les prérequis sont  vérifiés (ou à jour) et il les construit le cas échéant, or il n'y a pas de rêgles correspondantes, là il y comprend plus rien.
 
Ce que tu veux faire, je pense c'est :
 
EXECFILE = liste des executables
 
run: ${EXECFILE}
java class/$^
 
et une règle par fichier compilé :
mon.class : ${SRC}/mon.java
javac $^
 
en gros!

n°640241
western
AJMM
Posté le 22-02-2005 à 14:03:23  profilanswer
 

[quote=640228,0,6,66993]


#execute program
run: normal
 cd class && java $^  

[/quote]
oups! je me suis un peu gourré:


#execute program
run: normal
 cd class && java ${MAINFILE}

[/quote]

n°640247
xouille38
Posté le 22-02-2005 à 14:10:13  profilanswer
 

[quote=640241,0,8,66993]oups! je me suis un peu gourré:


#execute program
run: normal
 cd class && java ${MAINFILE}

[/quote][/quote]
Ayé j'ai compris Main c'est l'executable :D , pour ce que je connais en java... Je croyais que javac il sortait que des .class

n°640252
western
AJMM
Posté le 22-02-2005 à 14:14:41  profilanswer
 

exacte, javac te sort des .class sauf que l'interpreteur java n'a pas besoin de .class à la fin du nom de fichier (ça provoque une erreur)...

mood
Publicité
Posté le 22-02-2005 à 14:14:41  profilanswer
 

n°640298
xouille38
Posté le 22-02-2005 à 15:26:46  profilanswer
 

[quote=640252,0,10,66993]exacte, javac te sort des .class sauf que l'interpreteur java n'a pas besoin de .class à la fin du nom de fichier (ça provoque une erreur)...[/quote]
 :jap:  
 
et du coup mea culpa j'ai dit que des conneries!!

n°640306
western
AJMM
Posté le 22-02-2005 à 15:39:35  profilanswer
 

ça peut arriver à tout le monde (cela m'est arrivé pas plus tard qu'il y a une heure sur le forum programmation ;-)

n°640450
Giz
Posté le 22-02-2005 à 18:49:03  profilanswer
 

Parfait !
 
Merci tout le monde  :hello:


Aller à :
Ajouter une réponse
 

Sujets relatifs
Makefile et définition d'une constante[KDevelop] A propos du makefile ...
"depmod : ...Makefile is not an ELF file" ca veut dire koi ? pliz helpkdevelop et C++/Qt : comment generer le configure, makefile, ... ??
[glib-2.0 / Makefile] petit problème d'inclusionMakefile?
help: compil noyau ou pb de makefile...problème avec Makefile
Plus de sujets relatifs à : Makefile


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)