Gemäß der scons documentation wird die subst
Methode rekursiv interpolieren Konstruktionsvariablen. Allerdings scheint es nicht rekursiv zu sein:Rekursive Variablensubstitution mit envst
e = Environment(CPPDEFINES = ["FOOBAR=${foobar}"])
e["foo"] = 1
e["bar"] = "${foo + 1}"
e["foobar"] = "$${foo + ${bar}}"
# I want this to print "foobar: 3"
print "foobar:", e.subst("${foobar}")
e.Program("test.c")
Drucke:
scons: Reading SConscript files ...
foobar: ${foo + 2}
scons: done reading SConscript files.
scons: Building targets ...
gcc -o test.o -c -DFOOBAR=3 test.c
gcc -o test test.o
scons: done building targets.
foobar
richtig während der Kompilierung als Teil CPPDEFINES, aber nicht in der Print-Anweisung ausgewertet wird. Wie kann ich subst
erhalten, um foobar vollständig auszuwerten?
Ich bin nicht in der Lage, es jetzt zu testen, und ich kann es nicht in den Dokumenten finden, so dass ich keine vollständige Antwort posten kann, aber ich denke, das $$ ist bis zu einem nicht bewertet $. Versuchen Sie den gleichen Code, außer mit e ["foobar"] = "$ {foo + $ {bar}}" –