기본적으로 SCons는 프로그램을 작성하는 데 사용되는 'recipe'을보고 프로그램에서 암시 적 종속성을 추출합니다. 예를 들어 내 Sconstruct에 다음을 포함한다고 가정 해 보겠습니다.SCons에게 명령 동작의 암시 적 종속성을 무시하도록하려면 어떻게합니까?
Command('foo', 'foocreator.py', '/usr/bin/python foocreator.py > foo')
그리고 나는 이미 'foo'('foo'가 최신 버전 임)를 구축했습니다. 지금 SCons는가 시도
Command('foo', 'foocreator.py', '/usr/bin/qrsh -V -cwd /usr/bin/python foocreator.py > foo')
(즉, SGE를 통해 foocreator.py 스크립트를 실행) : '갑'에 대한 명령이되도록 는 지금은 SConstruct (이상 현실적으로, 서로 다른 옵션을 전달)을 변경 foo를 재 빌드하면, --debug = explain은 "/ usr/bin/qrsh에 대한 새로운 의존성"과 "/ usr/bin/python에 대한 종속성 감소"때문이라고 알려줍니다.
레시피와의 종속성에 대한 이러한 추측을 방지하려면 어떻게해야합니까? 지금까지 나는이 행동의 명세를 찾을 수조차 없었다. 나는 'foo'가 실제로 모든 python이나 qrsh에 의존하지 않는다는 사실을 밝히고 싶지 않습니다. 왜냐하면 나는 모든 목표와 그 프로그램의 가능한 모든 위치에 대해 그렇게해야 할 것이기 때문입니다. "올바른"방법이 있어야합니다.
편집 :
Ignore('foo', '/usr/bin/python')
Ignore('foo', '/usr/bin/qrsh')
을 심지어이 작동하지 않습니다 나는 또한 지금은 명시 적으로 같이 각 대상에 대한 무시를 추가하는 시도! SCons는 qrsh를 통해 실행될 때마다 모든 것을 다시 작성하려고합니다.
SCons는 foo를 항상 다시 작성하려고합니까, 아니면 Command() 작업을 변경 한 직후입니까? 행동을 변경 한 후에야 그 일이 내게 상당히 합당한 것처럼 들립니다. – Brady
@Brady 액션이 "변경"되는 경우에만. 환경이 변경되어 파이썬 (또는 gcc 등)의 다른 버전이 사용되는 경우에도 동일한 작업을 수행합니다. 나는 그 행동이 많은 경우에 유용하다는 것에 동의하며, 나는 그 행동을 끄는 법을 알고 싶다. – Joe