IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Création et compilation de projet avec Make


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Création et compilation de projet avec Make
    Bonjour,

    Je cherche comment affecter les argument de la ligne de commande (dans un terminal avec in interpréteur) à deux variables :
    Project_Name : premier argument de la ligne de commande ;
    Sub_Projects_Names : du second au denier argument de la ligne de commande.

    Voici mon Makefile pour le moment pour compiler un projet Ada :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    part=`ls -d Arch*` 
     
    libs=`for j in Arch*; do echo -aI$$j/src/lib; done` 
     
    default: mrproper all clean
     
    all:
            for i in $(part) ; do \
                    if [ -f $$i/src/$$i.adb ]; then \
                            gnatmake -q $$i/src/$$i.adb $(libs) -D $$i/obj/ -o $$i/bin/$$i -aI../PragmARC; \
                    fi; \
            done
    mrproper:
            for i in $(part) ; do \
                    rm -f $$i/obj/*; \
                    rm -f $$i/bin/$$i; \
            done
    clean:
            for i in $(part) ; do \
                    rm -f $$i/src/lib/*~; \
                    rm -f $$i/src/*~; \
                    rm -f $$i/obj/*; \
    Je souhaiterais écrire une cible pour préparer le projet ; C'est à dire créer les sous- répertoire nécessaire au développement du projet !

    Mais je doit d'abord remplacer Arch part le premier arg $(Project_Name) de command_line et libs par les autre args $(Sub_Projets_Names) de la ligne de commande.

    Svp !
    Merci pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le Makefile suivant est spécialisé pour le langage Ada pour compiler un projet bien éclaté.
    Enfin, je pense qu'il est adaptable.
    J'ai réussi à faire ce que je veux avec un fichier intermédiare.
    Tout est la sauf le code à écrire entre appel à make prepare et make all.

    Là, j'ai écrit un fichier Project.default :

    cat > Project.default
    Testing
    Testing-Alpha
    Testing-Omega
    Testing
    J'ai écrit ce Makefile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #To make Ada projects.                                                                                                                                                        
    Project_Name=`head -n 1 Project.default`
    Sub_Projects_Names=`tail -n +2 Project.default`
    libs=`for j in \`tail -n +2 Project.default\`; do if [ -d \`head -n 1 Project.default\`$$j ]; then echo -aI\`head -n 1 Project.default\`$$j/src/lib; fi; done`
    default:
            @echo "Par defaut, rien à faire pour être bon."
            @echo "Cible restante : "
            @echo "Cible 'prepare' pour fabriquer les répertoires du projet"
            @echo "Cible 'all' pour compiler le projet"
            @echo "Cible 'mrproper' pour supprimer les fichiers objets obtenus avec make all: "
            @echo "Cible 'clean' pour supprimer les anciens fichiers sources et les fichier objets sauf le fichier programme principal"
     
    prepare:
     
            echo Project Name = $(Project_Name);
            echo Sub Projects Names = $(Sub_Projects_Names);
            if [ ! -d $(Project_Name) ]; then \
                    mkdir $(Project_Name); \
            fi;
            if [ -d $(Project_Name) ]; then \
                    for i in $(Sub_Projects_Names) ; do \
                            if [ ! -d  $(Project_Name)/$$i ]; then \
                                    mkdir -p $(Project_Name)/$$i; \
                                    mkdir -p $(Project_Name)/$$i/src/lib; \
                                    mkdir -p $(Project_Name)/$$i/obj; \
                                    mkdir -p $(Project_Name)/$$i/bin; \
                            fi; \
                    done; \
            fi
    all:
            for i in $(Sub_Projects_Names) ; do \
                    if [ -f $(Project_Name)/$$i/src/$$i.adb ]; then \
                            gnatmake $(Project_Name)/$$i/src/$$i.adb $(libs) -D $(Project_Name)/$$i/obj/ -o $(Project_Name)/$$i/bin/$$i; \
                    fi; \
            done
    mrproper:
            for i in $(Sub_Projects_Names) ; do \
                    rm -f $(Project_Name)/$$i/obj/*; \
                    rm -f $(Project_Name)/$$i/bin/$$i; \
            done
    clean:
            for i in $(Sub_Projects_Names) ; do \
                    rm -f $(Project_Name)/$$i/src/lib/*~; \
                    rm -f $(Project_Name)/$$i/src/*~; \
                    rm -f $(Project_Name)/$$i/obj/*; \
            done
    En suite j'appelle make prepare.
    Puis j'écris mon code avec Testing/Testing/src/Testing.adb comme programme principale.

    Je en suite exploiter mon Makefile grâce à la commande "make".

  3. #3
    Invité
    Invité(e)
    Par défaut
    Petit oubli d'un '/' quelques parts dans les noms de répertoires de la variable $(libs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libs=`for j in \`tail -n +2 Project.default\`; do if [ -d \`head -n 1 Project.default\`/$$j ]; then echo -aI\`head -n 1 Project.default\`/$$j/src/lib; fi; done`

    Désolé pour l'erreur

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Je ne connais pas bien (ou plus trop) le make...

    mais j'ai une question: "quelle est la question?"

Discussions similaires

  1. Compiler un projet avec csc.exe
    Par Anified dans le forum C#
    Réponses: 9
    Dernier message: 30/05/2008, 16h24
  2. Comment compiler un projet avec lua
    Par Mindiell dans le forum Dev-C++
    Réponses: 1
    Dernier message: 13/03/2007, 23h08
  3. Comment compiller mon projet avec Dev C++
    Par Micheal1221 dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/07/2006, 12h38
  4. Réponses: 13
    Dernier message: 19/01/2006, 10h06
  5. Impossible de compiler un projet avec #include <glib.h>
    Par canard75 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 14/12/2005, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo