Makefile pour Java
![]() | Combien d'entre vous programmeurs Java ont eu des problèmes de compilation des programmes? bibliothèques à $ CLASSPATH, les paramètres de kilométrage pour être passés au compilateur Java. Même avec les environnements de développement pour Java, la situation ne s'améliore pas beaucoup. Nous passons beaucoup de temps et paramètre la série chaque fois que vous commencez à remplir manque quelque chose! |
Vous pouvez éviter tous ces problèmes simplement par l'organisation du code source Java et en utilisant un Makefile écrit à cet effet.
Qu'est-ce qu'un Makefile
Un makefile est un fichier qui décrit les étapes pour arriver à efftuare fichiers que nous obtenons l'arbre et toutes ses dépendances. Il est utilisé dans les plates-formes Unix et peut être utilisé pour compiler chaque type de programme. L'utilitaire make interprète le Makefile et compiler le code source des programmes exécutables et les bibliothèques.
Les avantages de l'utilisation de make
Beaucoup d'entre vous sont sceptiques quant à l'aide d'un makefile pour chaque projet Java pour la simple raison que le makefile doit spécifier les dépendances entre les fichiers qui vont certainement changer de projet en projet. Nous devons donc écrire un makefile pour l'autre de notre projet. Cette limite peut être surmontée par la rédaction d'un générateur de makefile est capable de calculer toutes les dépendances pour le projet doit être complété pour utiliser le même script pour tous les projets sans rien moficare dans le makefile.
Certainement pas un avantage négligeable est la capacité de faire juste assez pour remplir. S'il vous plaît éviter de faire ce qui est déjà terminé et n'a pas été modifié avec une économie substantielle de temps.
Avec seulement un makefile, vous pouvez construire toutes les sources du projet.
Comment faire pour utiliser
Le makefile que j'ai écrit pour construire des projets Java peut être utilisé sans modification pour les projets qui ont une structure de répertoire donné. La source Java doit avoir un répertoire pour. Java, une pour les fichiers. Classe, et un pot pour les bibliothèques.
Par exemple:
| - Src | `- Main | | - Java | | `- Com | | `- Exemple | | | - ExampleA.java | | | - ExampleB.java | | `- ExampleC.java | `- Ressources | `- Res.java | - Les classes | - Libs | | - Général | | | - Base de données | | | | - DB1.jar | | | `- DB2.jar | `- Exploitation forestière | `- Log.jar | - Jars
utilisation, il suffit d'écrire, puis le code ci-dessous dans le Makefile à la racine du répertoire du projet, vérifiez que le nom du répertoire est celui spécifié dans le fichier (pour les classes. classe, car src. Libs Pour jar pour Java) et le lancement commande make
c'est tout. Si nous voulons un bocal contenant l'ensemble du projet il suffit d'exécuter make && make jar
Makefile
# # Makefile # Auteur: Danilo Abbasciano # # Mettre ici les répertoires pour les classes et les sources CLASS_DIR classes = Src = SOURCE_DIR bocaux JARS_DIR = find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) Sous-dossiers: = $ (shell find $ (SOURCE_DIR) - name "*. java" - h% printf \ n | sort | uniq | sed 's / $ (SOURCE_DIR) \ / \? / / ») local / java / bin JAVA_HOME = / usr / local / java / bin Champ # compilateur JDEBUGFLAGS = #-g-dévalorisation JDEBUGFLAGS = #-O-dépendent-nowarn ) / javac CCM = $ (JAVA_HOME) / javac clean classes compile jar : Nettoyer la compilation des classes pot faux. à: SUBDIRS ) ; do \ @ @ Pour P $ (sous-répertoires); ne \ p ; \ echo 'compiler' $ p; \ $$ p ; \ Export SubD = $ p; \ print - directory compile ; \ faire - pas d'impression - - répertoire de compilation, \ fait Propreté: f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) - RM - f * ~ *. bak *. class $ (dir foreach, $ (sous-répertoires) $ (CLASS_DIR) / $ (dir), classe *.) ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $ (CLASS_DIR) / $ (SubD) ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $ (SOURCE_DIR) / $ (SubD) jar: ) ; jar - cf ../$ ( JARS_DIR ) / project . jar * cd $ (CLASS_DIR) JAR - cf .. / $ (JARS_DIR) / projet. jar * compile: classes # Dir classe cible Créer s'il n'est pas présent. ) : $ (LOCAL_CLASS_DIR): LOCAL_CLASS_DIR ) mkdir - p $ (LOCAL_CLASS_DIR) Nouvelle règle # pour Java . Suffixes: java . class . Suffixes:. Java. Classe # Qui raconte la commande make magique pour trouver des fichiers de classe dans une autre dir class $ ( LOCAL_CLASS_DIR ) Vpath%. Classe $ (LOCAL_CLASS_DIR) java $ ( LOCAL_SOURCE_DIR ) Vpath%. Java $ (LOCAL_SOURCE_DIR) # Classpath, tous les po / Pots et. / Libs ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH: = $ (CLASS_DIR): $ (SOURCE_DIR): $ (subst. Jar. Jar: $ (wildcard libs / libs libs *. jar jar /*/*/*. jarres jar /*/*. / * . jar)) # De commande du compilateur class : . Java. Classe: ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $< CLASSPATH = $ (LIBCLASSPATH) $ (CCM) - nowarn - d $ (CLASS_DIR) $ (JDEBUGFLAGS) <$ # Trouver les fichiers cibles $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $ (wildcard $ (LOCAL_SOURCE_DIR) / *. java) $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) ) FILES = $ (subst $ (LOCAL_SOURCE_DIR) /, $ (PATHFILES)) java =. class ) classes: $ (fichiers:. java =. classe)
Bonne compilation.















One Response to "Makefile pour Java»
thegamer - 28 août 2009
Je préfère de beaucoup de fourmis?
Vous devriez essayer ...
Laisser un commentaire