Befehle "buendeln"
-
Hey Ihr,
ich hab da eine (wahrscheinlich triviale) Frage:
ich habe ein C++ Programm, das ich ganz oft leicht veraendern, dann kompilieren, linken und laufen lassen muss.
Nu wuerd ich ganz gerne nicht immer neben dran sitzen und erst den compilier-befehl eingeben, warten bis compiliert, dann den link-befehl eingeben, warten bis gelinkt, laufen lassen usw
Es muss doch irgendwie eine Moeglichkeit geben, die 3 Befehle zu buendeln, so dass der Computer von alleine eins nach dem anderen ausfuehrt.
Ich hab schon je ein "alias" fuer die befehle. Meine drei Schritte sind:
ncc bla.cpp
ncc2bla
blaAlso: wie kann ich die drei verbinden?
Wenn ich sie einfach nacheinander in die kommandozeile eintippe und return druecke, gibts nur fehlermeldungen.Wer is schlauer als ich?
-
Suchst Du make(1), oder willst Du wissen, wie man Shellscripte schreibt?
-
shellscript?
so a la:
bla.sh erstellen, "chmod 777 bla.sh" ausführen
reinschreiben:ncc bla.cpp
ncc2bla
blaund immer wenns laufen soll ./bla.sh eingeben. fertig.
mfg
Desireps: falls es das is was du wolltest
-
---[EDIT]ups, falscher button[/EDIT]---
[ Dieser Beitrag wurde am 25.06.2003 um 19:30 Uhr von Desire editiert. ]
-
Aeh, keine Ahnung, ob ich ein make(1) oder ein Shellscript will. Was is der Unterschied?? (nicht hauen!!)
Ich probier jetzt mal das mit dem bla.sh
Ich mach also ein file bla.sh und da kommen genau die drei Zeilen rein.
Und wo kommt da das chmod 777 bla.sh hin??AchtungAnfaenger
-
Hi
Da ich mit emacs schreibe.
Schreib ich auch noch folgendes ins script#!/bin/bash g++ -o bla bla.cpp rm *.o rm *.cpp~ rm *.h~ rm *.c~
[ Dieser Beitrag wurde am 25.06.2003 um 19:41 Uhr von prolog editiert. ]
-
spätestens wenn du so an die 5..10 Dateien hast, die jedesmal compiliert werden, wirst du dich nach make sehnen.
-
Hi
Wenn du das skript geschrieben und unter bla.sh oder was auch immer abgespeichert hast. Gibst du am prompt chmod 777 bla.sh ein.
Oder aber chmod u+x blah.sh.
Siehe hierzu man chmod.Das shell skript is so aber relativ unflexibel
Also entweder erweiterstest du es oder benutzt make.
Ich würde dir make empfehlen.Eins noch:
Wenn du demnächst mal wieder n shell script brauchst, tipp erstmal man bash
oder was auch immer deine Shell ist.
-
He,
danke fuer die vielen und schnellen Antworten!! Hier geht ja echt die Post ab
"make" ist das, wo man sich ein Makefile schreibt und da kommen dann alle Befehle rein und ausfuehren kann man das ganze mit "make", oder?
Kennt wer ne gute, anfaengerfreundliche (sprich idiotensichere) Makefile-Erklaerung irgendwo im Netz oder so?
Mit der ganzen "man"-Hilfe ist als Anfaenger irgendwie nich so der Hit.
Planlose Gruesse
,
AchtungAnfaenger!
-
ne idiotensichere Anleitung zu make gibts (leider?) nicht. kannst ja mal das info-file durchgucken (für newbies: info make). oder, wenns nicht installiert ist, gucken ob du das html-äquivalent unter /usr/doc findest. Oder im Netz, www.gnu.org, danach suchen.
-
make lohnt sich bei ein-dateien-programmen ihmo nicht so ganz.
ich habe zum assemblieren eine funktion definiert (in ~/.profile geschrieben):
function assemble { if [ ! $1 ]; then return 1; fi name=${1%%.s} as $name.s -o $name.o && ld $name.o -o $name && chmod +x $name && ./$name }
$1, $2, $3, .. sind die uebergebenen Parameter.
die 5. Zeile ist afaik Bash-spezifisch, sollte sich aber auch anders loesen lassen. (falls ihr wisst wie, bitte schreibt es!)musst dann nur noch die kommandos ersetzen, dann sollte es gehen.
-
Bevor du mit MAKE oder Scripte etwas machst solltest du dein Programm vorerst mal überdenken.
Ein Programm änderst man nur wenn man Funktionen hinzufügt/Entfernt/ändert oder sonstwas.
Wenn du nur kleine Änderungen machst um z.B auf einen andere Datzei zuzugreigen dann etnwerder per Commandozeile die Parameter übergeben oder eine INI (Conf.)-Datei machen.
-
Hi,
auch ich bin faul. daher hab ich dieses script#!/bin/bash # kompiliert dBaseTest vi einzelbefund.cc // editieren des Quelltextes make -f einzelbefund.mak // make mit Angabe, was er machen soll if [[ "&?" = "0" ]] then einzelbefund // kein Fehler, dann ausführen else echo Fehler beim kopieren= $? fi ~
und die einzelbefund.mak :
einzelbefund: einzelbefund.o dbase.o mystrings.o labor_utils.o einzelbefund.mak g++ einzelbefund.o dbase.o mystrings.o labor_utils.o -oeinzelbefund cp einzelbefund /home/www/labor/docs/cgi-bin/ chmod 755 /home/www/labor/docs/cgi-bin/einzelbefund mystrings.o: mystrings.cc mystrings.hh g++ -c -Wall mystrings.cc labor_utils.o: labor_utils.cc labor_utils.hh g++ -c -Wall labor_utils.cc dbase.o: dbase.cc dbase.hh g++ -c -Wall dbase.cc einzelbefund.o: dbase.hh einzelbefund.cc g++ -c -Wall einzelbefund.cc
Und dann sollte man ( wie oben schon gesagt) die überflüssgen files weglöschen)
Weitere Fragen gern
Hannsp.s. das Ganze wird mit ./makeeinzel aufgerufen
noch ein p.s. : wenn Du DIch mit redirection der AUsgabe beschäftigts, dann kannst DU Deine Fehler noch in eine datei umleiten, Aber da wir jha nie fehler machen, brauchen wir das auch nicht.
[ Dieser Beitrag wurde am 26.06.2003 um 08:23 Uhr von ^Hanns editiert. ]
-
HI
@^Hans
Iehhk. Du benutzt den VI?
-
logo, DU nicht?
gibt es denn sonst noch was anderes
HannsAber mal im Ernst, so gehts doch am schnellsten, wenn man auf entfernten Rechnern was machen muß !?
[ Dieser Beitrag wurde am 26.06.2003 um 12:25 Uhr von ^Hanns editiert. ]
-
Hi
JO. Wusste nicht das du an nem Terminal sitzt.
Ich bin immer local dran und da mach ich n großen Bogen um den VI.
Nur kurz nach der Installation gehts halt nicht anders.