scons documentation에 따르면 subst
메서드는 이 구성 변수을 재귀 적으로 보간합니다. 그러나, 재귀하지 않는 것 :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")
인쇄 :
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
가 제대로 아니라 인쇄 문, CPPDEFINES의 일부로서 컴파일시 평가된다. foobar를 완전히 평가하려면 subst
을 얻으려면 어떻게해야합니까? 케니 스트롬에 의해 제안 표현
e["foobar"] = "${foo + ${bar}}"
를 사용
지금 당장 테스트 할 수있는 위치에 없기 때문에 문서에서 찾을 수 없으므로 완전한 대답을 게시 할 수는 없지만 $$은 비 - 평가 된 $. e [ "foobar"] = "$ {foo + $ {bar}}"를 제외하고 동일한 코드를 사용해보십시오. –