Compile Script: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
JohnDVD (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Ich2222 (Diskussion | Beiträge)
K Rechtschreibung verbessert.
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Wer in vielen Programmiersprachen programmiert kennt das Problem, dass man ständig andere Compiler mit anderen Aufrufen braucht.
Wer in vielen Programmiersprachen programmiert kennt das Problem, dass man ständig andere Compiler mit anderen Aufrufen braucht.
Bei großen Projekten hilft hier Makefile. Da man aber auch kleine Programme mal testen will habe ich ein kleines script geschrieben das anhand der Endung den passenden Compiler aufruft.
Bei großen Projekten hilft hier Makefile. Da man aber auch kleine Programme mal testen will habe ich ein kleines Script geschrieben das anhand der Endung den passenden Compiler aufruft.


<b>
<b>
Zeile 8: Zeile 8:


<pre>
<pre>
  #!/bin/sh
  #!/bin/bash
  ## Hier alle Compiler eintragen und anpassen
  # Hier alle Compiler eintragen und anpassen
  ada1="gnat compile"
  ada1="gnat compile"
  ada2="gnatmake"
  ada2="gnatmake"
Zeile 18: Zeile 18:
  cpp="g++"
  cpp="g++"
  fortran="gfortran"
  fortran="gfortran"
java="jikes"
  php="php"
  php="php"
  python="python"
  python="python"
  java="jikes"
  ruby="ruby"


  # vorher unbedingt anpassen!
  # Vor verwenden des Scriptes an das System anpassen!
  CFLAGS="-O3 -march=pentium3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"
  CFLAGS="-O3 -march=pentium3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"


  ## Programm namen und endung auslesen
  # Programmnamen und Endung auslesen
  name=${1%%.*}
  name=${1%%.*}
  endung=${1##*.}
  endung=${1##*.}
Zeile 70: Zeile 71:
                 echo "$python $1"
                 echo "$python $1"
                 $python $1 ;;
                 $python $1 ;;
        ruby )
                echo "Ruby File"
                echo "$ruby $1"
                $ruby $1 ;;
         sh )
         sh )
                 echo "Bash File"
                 echo "Bash File"
Zeile 79: Zeile 84:
                 $java $1;;
                 $java $1;;
         * )
         * )
                 echo "Fehler!!! unbekannte endung!"
                 echo "Fehler!!! Unbekannte Endung!"
                 echo "$endung wurde nicht gefunden" ;;
                 echo "Konnte kein Programm zum Ausführen von $endung finden." ;;
  esac
  esac
</pre>
</pre>


[[Kategorie:Scripte]]
[[Kategorie:Scripte]]
[[Kategorie:Entwicklung]]

Aktuelle Version vom 7. Mai 2016, 21:42 Uhr

Wer in vielen Programmiersprachen programmiert kennt das Problem, dass man ständig andere Compiler mit anderen Aufrufen braucht. Bei großen Projekten hilft hier Makefile. Da man aber auch kleine Programme mal testen will habe ich ein kleines Script geschrieben das anhand der Endung den passenden Compiler aufruft.

Anmerkung: Das "Compile Script" übersetzt Quellcode in einer der Programmiersprachen aber nicht Skripte in Skriptsprachen (BASH, PHP, PYTHON, ...). Statt zu kompilieren werden diese Skripte ausgeführt.

 #!/bin/bash
 # Hier alle Compiler eintragen und anpassen
 ada1="gnat compile"
 ada2="gnatmake"
 asm1="nasm -f elf"
 asm2="ld -s -o"
 bash="sh"
 c="gcc"
 cpp="g++"
 fortran="gfortran"
 java="jikes"
 php="php"
 python="python"
 ruby="ruby"

 # Vor verwenden des Scriptes an das System anpassen!
 CFLAGS="-O3 -march=pentium3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"

 # Programmnamen und Endung auslesen
 name=${1%%.*}
 endung=${1##*.}

 case $endung in
        adb )
                echo "Ada File"
                echo "$ada1 $1"
                $ada1 $1
                echo "$ada2 $1"
                $ada2 $1
                if [ $? -eq 0 ]; then
                        echo "$name.ali und $name.o löschen? <j/n>"
                        read ans;
                        if [ $ans == 'j' ]; then
                                rm $name.ali $name.o
                        fi
                fi ;;
        asm )
                echo "ASM File"
                echo "$asm1 $1"
                $asm1 $1
                echo "$asm2 $name $name.o"
                $asm2 $name $name.o
                ;;
        c )
                echo "C File"
                echo "$c $CFLAGS -o $name $1"
                $c $CFLAGS -o $name $1 ;;
        cpp )
                echo "C++ File"
                echo "$cpp $CFLAGS -o $name $1"
                $cpp $CFLAGS -o $name $1 ;;
        f* )
                echo "f* File"
                echo "$fortran -o $name $1"
                $fortran -o $name $1 ;;
        php )
                echo "php File"
                echo "$php $1"
                $php $1 ;;
        py )
                echo "Python File"
                echo "$python $1"
                $python $1 ;;
        ruby )
                echo "Ruby File"
                echo "$ruby $1"
                $ruby $1 ;;
        sh )
                echo "Bash File"
                echo "$bash $1"
                $bash $1 ;;
        java )
                echo "Java File"
                echo "$java $1"
                $java $1;;
        * )
                echo "Fehler!!! Unbekannte Endung!"
                echo "Konnte kein Programm zum Ausführen von $endung finden." ;;
 esac