8
입력/출력 파일이없는 SCons에서 명령을 실행하고 싶습니다. 실제로는 입력과 출력이 같은 파일입니다. 지금은 subprocess.Popen을 사용하여 수동으로 실행하고 있지만 더 많은 SConsy 방법이 있습니까?종속성없이 SCons 명령을 실행하십시오.
입력/출력 파일이없는 SCons에서 명령을 실행하고 싶습니다. 실제로는 입력과 출력이 같은 파일입니다. 지금은 subprocess.Popen을 사용하여 수동으로 실행하고 있지만 더 많은 SConsy 방법이 있습니까?종속성없이 SCons 명령을 실행하십시오.
당신은 당신이는 popen을 통해 실행 외부의 어떤 명령을 실행하기 위해 Command 기능을 사용할 수 있습니다, 그리고 당신은 항상 대상 파일이 존재하는 경우에도 실행 명령을 보장하기 위해 AlwaysBuild 기능을 사용할 수 있습니다. Scons는 종속성주기를 좋아하지 않으므로 소스 목록을 비워 두십시오.
myfile = env.Command('myfile.out', [], 'echo Hello world > $TARGETS')
env.AlwaysBuild(myfile)
SCons는 위키는 쉽게 간단한 명령을 많이 설정할 수 있습니다 PhonyTargets위한 조리법이있다.
'myfile.out'을 빌드하는 규칙이 이미있는 경우 대상을 빌드하는 여러 가지 방법이 있다고 불평합니다. 나는 하나의 규칙으로 파일을 만들고 다른 하나는 그것을 수정하고 싶다. –
하나의 목표에 대해 두 가지 규칙을 갖는 것이 나쁜 생각이라고 생각합니다. Scons는 대상이 존재하는 경우 '수정'규칙이 호출되었는지 여부를 어떻게 알 수 있습니까? 각 규칙마다 하나씩 두 개의 대상이 있으면 더 효과적입니다. 또는 '만들기'및 '수정'작업을 모두 수행하는 규칙을 하나 있습니다. –
'AlwaysBuild'는 오해의 소지가있는 이름입니다. 실제로 명령을 실행하기 전에 scons가 평가하는 규칙이 있습니다. –