ich habe hier mal ein Script gebaut mit dem man C++ Sourcecode wie ein Script (Shell, Perl oder ähnl.) ausführen kann.
Da C++ ein # nicht als Kommentar interpretiert muss ich die erste Zeile entfernen. Vielleicht wäre es auch besser diese nur mit einem C++ Kommentar auszukommentieren weil sich dann die Anzahl der Zeilen nicht ändert. Wegen der Zeilennummern in den Fehlermeldungen vom Compiler.
Kann man dem g++ Sourcecode per Pipe übergeben?
Das würde das zwischen Speichern des Sourcecodes ersparen.
Code: Alles auswählen
#!/bin/bash
# Direktory und Dateiname trennen: dirname, basename
ProgName=$(basename $1 .cpp)
# Shebang entfernen
sed -e "1d" $1 > cache/$ProgName.tmp.cpp
# Nur kompilieren wenn der Sourcecode verändert wurde
# oder noch kein Binary vorhanden ist.
if [ -e "cache/$ProgName" ]; then
find -name "$ProgName.cpp" -newer ./cache/$ProgName -exec g++ cache/$ProgName.tmp.cpp -o cache/$ProgName \;
else
g++ cache/$ProgName.tmp.cpp -o cache/$ProgName
fi
# Lösche die Sourcecode Datei ohne Shebang
rm cache/$ProgName.tmp.cpp
# Zwischengespeichertes C++ Programm ausführen
cache/$ProgName
Alexander