2017-12-22 5 views
1

저는 도구를 작성하는 데 익숙하지 않고 답을 구상했지만 도움이되는 링크는 거의 없습니다.waf 스크립트에서 OS 플랫폼을 지정하는 방법은 무엇입니까?

아는 사람 있습니까?

wscript는 본질적으로 파이썬 스크립트이므로 os 패키지를 사용할 수 있습니까?

+1

당신은 다른 파이썬 스크립트에서 할 수있는 모든 곳에서'import os'를 사용할 수 있습니다. 'wscript'는 (어느 정도) 플랫폼에 무관심한 코드입니다. 나는 개인적으로'platform'을 사용하고'os'를 사용하지 않습니다. Windows 및 Linux/Unix에서 서로 다른 동작을하는 경우 다음과 같이 사용합니다. platform.system(). lower(). startswith ('win') : a = 'x' else : a = 'y'. 이 질문에 대한 대답이 있습니까? 그런 다음 나는 완전한 모범을 답으로 써 놓을 것이다. – user69453

+0

@ user69453 : 귀하의 의견을 답장 해 주시기 바랍니다. 질문이 변경되면 편집 할 수 있습니다. – neuro

답변

0

다른 파이썬 스크립트를 사용할 수있는 모든 지점에서 import을 사용할 수 있습니다.

대신 os의 일부 속성을 평가할 때 os-agnostic 함수를 프로그래밍하는 데 platform을 사용하는 것이 좋습니다. waf book OS 불가지론에 Build-related commands 예를 쓰기

,이 같은 것을 볼 수 있었다 :

ctx.load('compiler_c') 
print (ctx.env.DEST_OS, ctx.env.DEST_CPU, ctx.env.DEST_BINFMT) 

에 :

import platform 

top = '.' 
out = 'build_directory' 

def configure(ctx): 
    pass 

def build(ctx): 
    if platform.system().lower().startswith('win'): 
     cp = 'copy' 
    else: 
     cp = 'cp' 
    ctx(rule=cp+' ${SRC} ${TGT}', source='foo.txt', target='bar.txt') 
1

대신 DEST_* 변수를 사용 os 모듈을 사용하지 마십시오 내 컴퓨터는 ('linux', 'x86_64', 'elf')을 인쇄 할 것입니다. 그런 다음에 파견 ​​할 수 있습니다.