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

Systèmes de compilation Discussion :

Makefile et sed


Sujet :

Systèmes de compilation

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 29
    Points : 29
    Points
    29
    Par défaut Makefile et sed
    J'ai un petit souci pour utiliser sed dans un makefile et j'espère que quelqu'un pourra m'aider parce que là je vois pas trop quoi faire.
    Donc mon problème est le suivant : je souhaiterais insérer une ligne dans un fichier c. J'ai donc fait quelques recherches sur le net et trouvé SED qui permet de faire cela.
    Lorsque je tape la commande sous Cygwin, tout se passe bien, ma ligne est ajoutée comme je le souhaite. En revanche depuis le makefile...erreur :
    sed : "\" must terminate the "i" command

    Je pense que c'est un problème d'interprétation de chaine mais j'ai beau essayer tout un tas de solution, j'ai toujours le meme message.
    Je vous donne la commande que j'utilise :
    sed -e '1i\coucou' monfichier.c
    Si quelqu'un voit une solution, je suis preneur
    "I tried so hard and got so far
    But, in the end, it doesn't even matter"
    In the End, Linkin Park

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    sed ne va pas sauver ton fichier. C'est un filtre, il ne sait pas faire.
    Sinon, ton erreur semble venir de l'antislash qui ne te sert à rien ici.
    Il faut donc rediriger le résultat dans un fichier intermédiaire et le renommer ensuite.

    Mais pour un truc pareil, il serait peut-etre plus simple de faire un include d'un fichier que tu construis à la volée peut-etre ... ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 29
    Points : 29
    Points
    29
    Par défaut makefile et sed
    ouais pour ce qui est du fichier temporaire, c'est effectivement ce que je fais actuellement (le code fourni est effectivement incomplet puisqu'il ne precise pas le fichier de sortie).
    Par contre pour le bacslash, je comprend pas trop s'il faut ou non le mettre. Si tu regarde le message d'erreur, tu verras qu'il a l'air d'en attendre un, meme si c'est vrai qu'une commande line sous cyngwin n'en necessite pas. Donc je comprend pas trop.

    Pour ce qui est de la solution proposée, je vois pas trop comment faire. En fait, j'ai un fichier c généré automatiquement (c'est un peu compliqué dans le sens ou il s'agit d'un fichier qui va faire le lien entre du code généré pour un dsp et dont la position en flash doit etre connue pour le code utilisé sur un microcontroleur, donc j'entre pas dans le détail...). Le problème c'est que dans ce fichier, un type de données nécessite d'etre défini (ce qui est fait dans un header). Je souhaite donc, au début du fichier généré, insérer un #include "mestypes.h" et ceci, depuis mon makefile.
    "I tried so hard and got so far
    But, in the end, it doesn't even matter"
    In the End, Linkin Park

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Il attend un truc car tu as mis le backslash qui ne peut être seul.

    Tu ne peux pas générer automatiquement cet include ? Quitte à le déplacer dans un autre fichier d'entêtes qui dispose lui de règles qui sont fonction des sympboles de précompilation définis ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 29
    Points : 29
    Points
    29
    Par défaut makefile et sed
    ben malheureusement, le fichier généré ne fait aucun include, donc j'ai pas vraiment la possibilité de ruser de cette facon.
    Pour ce qui est du \, si je l'enlève, il me met toujours le meme message d'erreur. Je suppose qu'il l'attend quelquepart, mais je vois pas ou... J'ai meme essayé de le doubler...sans resultat.
    "I tried so hard and got so far
    But, in the end, it doesn't even matter"
    In the End, Linkin Park

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est bizarre. En ligne de commande, je n'ai pas ces messages.
    Sinon, tu peux toujours faire un echo suivit d'un cat pour ajouter une ligne dans un fichier temporaire.
    Et je me demande si il n'y a pas une autre méthode directement utilisable avec des compilateurs *nix.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre habitué

    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 166
    Points
    166
    Par défaut
    Désolée, mais chez moi, ça marche très bien sans le '\', même dans un makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # makefile :
    all : toto.b
    toto.a :
            echo "salut !" > $@
    %.b : %.a
            sed -e '1icoucou' $< > $@
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ make
    $ more toto.b
    coucou
    salut !
    mais sinon, je suis d'accord avec Luc Hermitte, le plus simple est sans doute de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (echo "coucou"; cat fichier.c) > tmp ; mv tmp fichier.c
    mais si tu veux vraiment utiliser sed, il y a aussi moyen de mettre la commande dans un fichier coucou.sed et de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sed -f coucou.sed fichier.c

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 29
    Points : 29
    Points
    29
    Par défaut echo et cat
    ok c'est bon, ca marche comme ca.
    Merci a vous deux.
    "I tried so hard and got so far
    But, in the end, it doesn't even matter"
    In the End, Linkin Park

Discussions similaires

  1. [Makefile] [Avancé]Récupération de dépendances
    Par Ruok dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 06/02/2004, 12h52
  2. [Debutant] Makefile
    Par Jfrancois57 dans le forum Systèmes de compilation
    Réponses: 8
    Dernier message: 26/01/2004, 13h18
  3. Makefile
    Par Wisefool dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 03/11/2003, 17h41
  4. [langage] awk et sed dans script perl
    Par scoti dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2003, 18h26
  5. Compilation avec un Makefile
    Par Mau dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 28/02/2003, 11h30

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