Création commande shell compilation

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. Modérateur
    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
    1. 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
      1. Modérateur
        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
        1. 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
          1. Modérateur
            Je recommence...

            Donnes-moi les commandes que tu saisies pour :
            - compiler
            - lancer l'appli dans le shell
            - effacer les ~ et a.out
            0
            1. 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
              1. 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
                1. 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
                  1. Niquel :D

                    bon j'etais pas tres loin :)

                    Merci beaucoup
                    0