Variables.save
은 사용자가 지정한 변수가 아닌 모든 변수를 저장하려면 어떻게해야합니까? 나는 미래의 scons가 똑같은 설정을 사용하도록하고 싶다.모든 스콘 저장 지정된 변수가 아닌 변수 (기본값 저장)
1
A
답변
0
슬프게도 핵심 SCons 기능을 사용하여이를 수행 할 방법이 없습니다. 변수 값을 저장할지 여부를 결정하거나 is hard-wired into Save을 저장할지 여부를 결정하고 기본값이 아닌 값만 저장할 수 있습니다.
그러나 제대로 기록되지 않은 "변환기"기능을 악용하여 모든 변수를 저장할 수 있습니다. 그것은 꽤 아니지만 일을 않습니다.
Variables.Save()
을 호출하면 각 변수의 변환기 함수를 호출하고 결과를 확인하여 기본값 (입력) 값과 같은지 확인합니다. Save
에서 호출 할 때 입력 값이 아닌 값을 반환하면 모든 값이 캐시 파일에 저장됩니다. 다른 곳에서는 입력 값을있는 그대로 반환하기 위해 변환기가 필요하거나 잘못된 변수 값을 사용하게됩니다.
def save_all(value, env=None):
import traceback
# if called in Save method, return non-default
for line in traceback.format_stack():
lines = line.splitlines()
if lines[0].endswith('Save'):
return value + 'save'
# return correct value otherwise
return value
import SCons
var = Variables("config.py", ARGUMENTS)
# AddVariables accepts tuples of:
# Variable key, description, default-value, validator, converter
var.AddVariables(
('CC', 'The C Compiler', 'cc', None, save_all),
('CFLAGS', 'Flags to pass to compiler', '-Wall', None, save_all))
env = Environment(tools=[], variables=var)
var.Save('config.py', env)
print 'CC', env['CC']
print 'CFLAGS', env['CFLAGS']
여기에서 기능 save_all
은 해킹입니다. 스택 추적을 사용하여 Save 내에서 호출되는지 확인합니다. 그럴 경우 변경된 값을 반환하고 그렇지 않으면 입력 값을 변경하지 않고 반환합니다. 캐시 파일 "config.py"에서이 예제의 결과를 확인할 수 있습니다.
관련 문제
- 1. 기본값 저장
- 2. 저장 프로 시저의 기본값 관리 '매개 변수
- 3. 저장 변수가
- 4. 저장 프로 시저 기본값
- 5. iPhone에 기본값 저장
- 6. 저장 프로 시저 선택적 매개 변수 기본값 할당
- 7. 지정된 크기로 뷰어 저장
- 8. CakePHP 기본값 0 값 저장
- 9. 몽구스/노드에 객체를 저장 (기본값)
- 10. 변수 저장
- 11. 대용량 변수 저장
- 12. 데이터베이스에 매개 변수 목록 저장
- 13. richtextbox에서 서식이 지정된 텍스트 저장
- 14. C 함수 포인터 변수 타입 클래스에 지정된 에러 저장 클래스
- 15. AsyncTask doInBackground에서 변수 저장
- 16. 변수 데이터를 디스크에 저장
- 17. 사이트 글로벌 변수 저장
- 18. codeigniter 객체에 변수 저장
- 19. Android : 일회성 변수 저장
- 20. WebService에 변수 저장
- 21. PHP 저장 변수
- 22. 공개 파일에 변수 저장
- 23. PHP 세션 저장 변수
- 24. JSON에 PHP 변수 저장
- 25. Automator의 영구 변수 저장
- 26. 저장 변수 데이터
- 27. 변수 출력에 파일 저장
- 28. 변수 저장 wp7
- 29. 아이폰에 매개 변수 저장
- 30. PHP 파일에 변수 저장