Makefile Java

Page principale

Répondre à ce message
Auteur: stephane parenton
Date:  
À: guilde
Nouveaux-sujets: Re: Makefile Java - la lecture c'est bien !
Sujet: Makefile Java
Bonjour,

Je cherche à me faire un makefile un peu évolué pour que je n'ai pas à
me soucier de compils java...

j'ai plusieurs répertoires : 
    x_sources et x_bin
    y_sources et y_bin
    z_sources et z_bin, etc...


ils contiennent les .java pour les sources et je veux qu'ils contiennent
les .class pour les bin.

j'ai aussi un repertoire de jar

pour le moment, je procède de cette manière, mais je ne suis pas
satisfait parce-que je pense qu'on doit pouvoir faire BEAUCOUP mieux....
x:
        @echo "******************************************************"
        @echo $@
        @echo "******************************************************"
        $(CompiloJava) -classpath $(ClassPath) $(x_src)/*.java
        @ls $(x_src) | grep .class
        @mv $(x_src)/*.class $(x_bin)/
        @echo "******************************************************"
        @echo $@ complete
        @echo "******************************************************"


j'aurais bien aimé que la ligne de compil ne soit plus comme ci dessus
mais comme ça :

        $(CompiloJava) -classpath $(ClassPath) $(x_src)/$< $(x_bin)/$@


si j'ai bien compris, ça devrait me permettre de lire TOUT les .java
(tous les fichiers même) du repertoire x_src et de les compiler vers le
repertoire de destination x_bin

J'ai une règle de compil en bas du Makefile : 
%.class: %.java
        $(CompiloJava) -$(Classpath) $(x_src)/$< $(x_bin)/$@


D'autre part, je n'arrive pas à optimiser mes regles pour ne plus avoir
qu'une seule règle du type

argument:
     $(CompiloJava) -classpath $(ClassPath) $($@_src)/$< $($@_bin)/$@


et qu'en argument du makefile je puisse dire make x y z et qu'on arrive
au même résultat que le codage en dur....

j'ai trouvé quelques tutoriels sur le net, les pages man ne m'ont pas
trop aidé... et le lien http://geosoft.no/javamake.html est très bien
mais ne va pas assez loin (c'est bien pour l'exemple...)

Y'a-t-il des brutes du makefile qui pourraient m'éclairer ?

D'avance merci
Stephane