Création commande shell compilation

soleil -  
 soleil -
Bonjour,

Je suis un peu novice sous linux mais désireux d'apprendre :p
Voici mon problème, dans le cadre de mes études, je dois programmer en c++.
Etant en phase d'apprentissage, il est clair que je compile/lance le programme/et fait le ménage TRES souvent.

Il existe une commande dans ma fac qui permet justement de compiler (g++)/de lancer l'appli dans le shell/ et d'effacer les ~ et a.out en une seule commande.

J'aimerai faire de même car je trouve celà tres pratique

Merci d'avance
Configuration: Linux
Firefox 2.0.0.11

10 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Il te suffit de mettre dans un script l'enchainement des commandes que tu tapes les unes à la suite des autres, soit chacune sur un ligne différente soit sur un ligne chacune séparée de la suivante par "&&" (sans les guillemets), et de passer en paramètre le nom du fichier (bien sûr, il te faudra inclure ce paramètre dans tes lignes de commandes).

    ;-))
    0
  2. soleil
     
    un script sous linux?
    je croyais qu'il fallait creer un alias ou directement une commande dans bin...

    Ok donc en fait je fais comme une fonction
    mais...comment creer ce script, ou le mettre et serait-ce possible d'avoir un exemple bateau

    merci encor :)
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Il existe une commande dans ma fac qui permet justement de compiler (g++)/de lancer l'appli dans le shell/ et d'effacer les ~ et a.out en une seule commande.
    Copie/colle les différentes commandes que tu tapes normalement et on verra ce qu'on peut faire.
    0
  4. soleil
     
    oui c'est ce que je pensais faire mais je savais pas trop ou se situais les commandes...

    en fait c'est dans ./bin c'est sa?

    ce que tu expliques doit être une apllication de la démo d'ici :
    http://www.lea-linux.org/cached/index/Dev-shell_script.html

    dsl pour le lien externe
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Je recommence...

    Donnes-moi les commandes que tu saisies pour :
    - compiler
    - lancer l'appli dans le shell
    - effacer les ~ et a.out
    0
  7. soleil
     
    alors
    compiler : g++ -lm "fichie.cpp"
    lancer l'appli ./a.out
    effacer rm a.out

    pour le moment j'ai fait (je sais pas si c'est la bonne méthode)
    #su
    cd /bin
    nano ccc (le nom de ma futur commande)

    et dedans :
    g++ -lm $1
    ./a.out (le nom ne doit pas dépendre du parametre je crois)
    et rm a.out

    merki
    0
  8. R4f Messages postés 441 Statut Membre 62
     
    Bonjour,

    Tout ce que tu peux faire sur la ligne de commandes, tu peux le mettre dans un fichier texte, puis rendre le fichier texte éxécutable et hop, en tapant le nom de ton fichier, les commandes qu'il contient sont exécutées...

    Exemple :
    fichier "compileretnettoyer"
    #!/bin/bash
    
    # Transformation de l'extension (ex. : .cpp) en .bin
    base=`echo $1 | sed -e 's/\.[^.]*$/.bin/'`
    
    # compilation
    echo c++ -o $base $1
    c++ -o $base $1
    
    # nettoyage
    rm -f *~ *tmp
    


    Donc ce fichier s'appelle "compileretnettoyer". Pour le rendre exécutable :
    chmod +x compileretnettoyer
    


    Pour l'exécuter :
    ./compileretnettoyer toto.cpp
    


    Va compiler toto.cpp puis nettoyer le répertoire des fichier ~ et tmp

    Raph
    0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ben voilà ;-))
    0
  10. soleil
     
    je crois que sa marche mais je suis obliger de taper :
    sh ccc "nom du fichier.cpp" et celà ne marche que dans le root

    est-il possible de le rendre executable dans le shell et en marquant seulement ccc "paramètre"? ou je dois pas faire comme celà?
    0
  11. soleil
     
    Niquel :D

    bon j'etais pas tres loin :)

    Merci beaucoup
    0