2017-07-19 4 views
1

Ich möchte eine Alternative zu machen, wo ich leicht einige Python-Code verwenden kann, um einige Zwischendateien zu generieren.Wie benutze ich Scons, um beliebige Rezepte zu erstellen?

Ich stieß auf Scons, die behauptet, zu Make ähnlich zu sein. Ich möchte diese Art von Makefile in Scons übersetzen, wo die Aufrufe von Python in Scons selbst erledigt werden.

.PHONY all clean mrproper 

all: out 

A=$(wildcard *.a) 
B=$(A:.b=.a) 
C=$(B:.c=.b) 
D=$(wildcard *.d) 
C=$(D:.c=.d) 

-include $(wildcard *.dep) 

*.b : *.a 
    python -mfoo a2b $< -o [email protected] -M [email protected] 

*.c : *.b 
    python -mfoo b2c $< -o [email protected] 

*.e : *.d 
    python -mfoo d2e $< -o [email protected] 

out: $(E) $(C) 
    python -mfoo out $^ -o [email protected] 

clean: 
    $(RM) $(B) $(C) $(E) 

mrproper: clean 
    $(RM) out *.dep 

Ist es möglich, es so zu tun? Ich bin nicht an einer funktionierenden Lösung interessiert, sondern an den Bausteinen, die ich starten muss.

Was mir fehlt, ist, dass Scons Helfer wie

env.Program(target = 'helloworld', source = ["helloworld.c"]) 

bietet, die mit Standarderweiterungen funktioniert (*.c, *.s, ...). Leider möchte ich kein Programm machen, und ich möchte das Rezept angeben. Anders gesagt ich bin etwas mehr wie folgt aus:

env.append(env.Recipe(target='%.b', deps=['out/%.a', 'out'], builder=foo_a2b)) 

Antwort

1

Das klingt wie Sie Ihre eigenen Builder schreiben/definieren wollen, in SCons parlance sprechen. Bitte werfen Sie einen Blick auf unsere ToolsForFools Guide, die zu erklären versucht, wie Sie SCons neue "Build-Rezepte" beibringen können. Beachten Sie, wie Sie immer eine echte Python aufrufbar (z. B. eine Funktion) anstelle einer bloßen Zeichenfolge für eine Aktion angeben können. Vielleicht möchten Sie auch die MAN page (besonders den Abschnitt über 'Action Objects') und die User Guide für eine bessere und umfassendere Einführung in dieses Build-System.

Endlich können Sie sich unserem User mailing list [email protected] anschließen und dort Nachfragen stellen. Unsere Gemeinschaft ist immer bereit zu helfen ...

Verwandte Themen