Selon le scons documentation, la méthode subst
va interpoler récursivement les variables de construction. Cependant, il ne semble pas être récursive:Substitution de variable récursive avec env.subst
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")
Prints:
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
est évaluée correctement lors de la compilation comme une partie de CPPDEFINES, mais pas dans la déclaration d'impression. Comment puis-je obtenir subst
pour évaluer pleinement foobar?
Je ne suis pas en mesure de le tester en ce moment, et je ne peux pas le trouver dans les documents, donc je ne peux pas poster une réponse complète, mais je pense que le $$ est échappé à un non évalué $. Essayez le même code, sauf avec e ["foobar"] = "$ {foo + $ {bar}}" –