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 :

Programmation shell makefile


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut Programmation shell makefile
    Bonjour
    Je suis un débutant en programmation shell, j'aimerai créer un script permettant de générer automatiquement un fichier Makefile. Malheuresment quand je lance ce script depuis mon terminal on m'affiche quelques erreurs en tappant ./ex7.sh prog :

    ./ex7.sh: line 11: fonctions.cpp: command not found
    ./ex7.sh: line 12: fonctions: command not found
    ./ex7.sh: line 11: main.cpp: command not found
    ./ex7.sh: line 12: main: command not found
    Et voilà mon script :

    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
     #!/bin/bash
     for i in `ls *.cpp`
    do
    if [ "basename $i" == "main.cpp" ]; then
    {
    objet1= ` basename $i ` 
    objet= ` basename $i .cpp ` 
    }
    else
    { 
    p1=  ` basename $i `
    p= ` basename $i .cpp `
     
    }
    fi
    done
     
     
     
     
    echo $1 : $objet.o $p.o >> Makefile
    echo -e "\n\t gcc $objet.o $p.o -o $1 \n" >> Makefile
     
     
    echo -e " $objet.o : $objet1 $p1 \n\t" >> Makefile
    echo gcc -c $objet1 -o $objet.o >> Makefile
     
    echo -e "\n $p.o: $p1 \n\t" >> Makefile
    echo gcc -c $p1 -o $p.o >> Makefile
     
    echo -e "clean :\n rm -f *.o" >> Makefile
    Je vous remercie pour toute éventuelle aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Il ne doit pas y avoir d'espace autour du signe = pour les affectations.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    J'ai repris un peu ton code plus en détail. Si tu l'exécutes tel quel (une fois corrigées les erreurs de syntaxe) :
    1. la variable objet devrait toujours être égale à main (sauf s'il n'y a pas de fichier main.cpp dans ton répertoire courant bien sur)
    2. la variable p ne contiendra jamais que le nom du dernier fichier .cpp rencontré dans la liste.

    Il faut donc que tu revoies l'enchainement de tes commandes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,
    Quelle est l'utilité de passer par un shell script pour créer un Makefile ?

    Si mes souvenirs sont exacts, on peut depuis le Makefile géré une arborescence quelconque, non ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/05/2007, 16h19
  2. Programme shell pour rechercher un ensemble de lignes dans un fichier
    Par loukili81 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/11/2006, 13h27
  3. Programmation Shell avec Red Hat Calcul de moyenne
    Par jcpoulard dans le forum Linux
    Réponses: 3
    Dernier message: 22/02/2006, 22h08
  4. Pourquoi la programmation Shell ?
    Par am.adnane dans le forum Linux
    Réponses: 14
    Dernier message: 21/01/2006, 00h47
  5. Programmation Shell
    Par Leila75 dans le forum Linux
    Réponses: 3
    Dernier message: 12/05/2005, 09h45

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