2 Stimmen

Werkzeug zur Erstellung von Software

Ich brauche so etwas wie make, d.h. Abhängigkeiten und die Ausführung von Shell-Befehlen, wobei ein fehlschlagender Befehl die Ausführung von make stoppt. Aber tiefer in die Shell integriert, d.h. in make wird jede Zeile in einem separaten Kontext ausgeführt, so dass es nicht einfach ist, eine Variable in einer Zeile zu setzen und sie in der folgenden Zeile zu verwenden (ich möchte kein Escape-Zeichen am Ende der Zeile, weil es nicht lesbar ist). Ich möchte eine einfache Syntax (kein XML) mit Kontrollfluss und Funktionen (was in make fehlt). Es muss keine Unterstützung für die Kompilierung haben. Ich muss nur mehrere mit Autotools erstellte Komponenten zusammenbinden, sie verpacken, Tests auslösen und Ergebnisse veröffentlichen.

Ich habe mir folgende Programme angesehen: make, ant, maven, scons, waf, nant, rake, cons, cmake, jam und sie entsprechen nicht meinen Anforderungen.

3voto

schettino72 Punkte 2736

Einen Blick auf doit

  • können Sie Shell-Befehle oder Python-Funktionen verwenden, um Aufgaben (Builds) zu definieren.
  • sehr einfach zu benutzen. schreiben sie skripte in python. "no api" (Sie brauchen nichts in Ihr Skript zu importieren)
  • es bietet eine gute Unterstützung für die Verfolgung von Abhängigkeiten und Zielen

2voto

Shawn Chin Punkte 78582

Werfen Sie einen Blick auf fabrizieren .

Wenn das nicht ausreicht oder Sie Ihr Build-Skript nicht in Python schreiben möchten, können Sie auch eine Kombination aus Shell-Skripting und fabrizieren . Schreiben Sie das Skript so, wie Sie Ihr Projekt manuell erstellen würden, aber stellen Sie den Build-Aufrufen "fabricate.py" voran, damit die Build-Abhängigkeiten automatisch verwaltet werden.

Einfaches Beispiel:

#!/bin/bash
EXE="myapp"
CC="fabricate.py gcc" # let fabricate handle dependencies
FILES="file1.c file2.c file3.c"
OBJS=""

# build link
for F in $FILES; do
    echo $CC -c $F
    if [ $? -ne 0 ]; then
        echo "Build failed while compiling $F" >2
        exit $?
    fi
    OBJS="$OBJS ${F/.c/.o}"
done

# link
$CC -o $EXE $OBJS

1voto

Brian Agnew Punkte 260470

Da Sie Kontrollfluss, Funktionen, alles in der gleichen Umgebung und kein XML wollen, klingt es so, als ob Sie die verfügbaren Shell-Skriptsprachen (sh/bash/ksh/zsh) oder Perl (fügen Sie hier Ihre Lieblingsskriptsprache ein!) verwenden wollen.

Ich stelle fest, dass Sie nicht nachgeschaut haben a-a-p . Ich bin damit nicht vertraut, außer dass es ein Make-System von den Leuten ist, die uns vim gebracht haben. Sie sollten sich das also vielleicht ansehen.

0voto

Emmanuel Caradec Punkte 2272

Eine Mischung aus Makefile und einer Skriptsprache, die auswählt, welches Makefile zu einem bestimmten Zeitpunkt ausgeführt werden soll, könnte dies leisten.

0voto

neuro Punkte 14332

Ich hatte die gleichen Bedürfnisse. Meine derzeitige Lösung besteht darin, Makefiles zu verwenden, um die Graph-Abhängigkeit genau darzustellen (Sie müssen "Rekursiv machen gilt als schädlich" ). Diese makefiles lösen Bash-Skripte aus, die makefiles-Variablen als Parameter nehmen. Auf diese Weise müssen Sie sich nicht mit dem Problem des Shell-Kontextes auseinandersetzen und Sie erhalten eine klare Trennung zwischen den Abhängigkeiten und den Aktionen.

Ich erwäge derzeit waf, da es gut konzipiert und schnell genug zu sein scheint.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X