2017-09-11 8 views
1

나는 판다의 cython extensions의 종속 구조를 setup.py에서 이해하려고합니다.distutils 확장 인수 - 대 vs 의존 소스 포함?

distutils.extension.Extension 인수 sources, depends을 가지고 있으며, include_dirs, 나는 이들의 차이를 알아낼 수 없습니다. 특히, 팬더 케이스에 빌드를 깨지 않고 depends (또는 pxdfiles)의 항목을 삭제할 수있는 장소가 많이 있습니다.

이 세 가지 인수의 구분은 무엇입니까? @phd에서 대답 다음

업데이트 : 생각을 주셔서 감사합니다 더 나은 내 혼란의 원인을 통신을 시도합니다. setup.py 파일이 위의 링크 된 팬더에서

pandas._libs.tslib 확장은 인수/kwargs로와 distutils.extension.Extension에 전달됩니다

ext = Extension('pandas._libs.tslib', 
    sources=['pandas/_libs/tslib.pyx', 
      'pandas/_libs/src/util.pxd', 
      'pandas/_libs/src/datetime/np_datetime.c', 
      'pandas/_libs/src/datetime/np_datetime_strings.c', 
      'pandas/_libs/src/period_helper.c'], 
    depends=['pandas/_libs/src/datetime/np_datetime.h', 
      'pandas/_libs/src/datetime/np_datetime_strings.h', 
      'pandas/_libs/src/period_helper.h', 
      'pandas/_libs/src/datetime.pxd'], 
    include_dirs=['pandas/_libs/src/klib', 'pandas/_libs/src']) 

가지고 예를 들어, sources 항목의 util.pxdinclude_dirs 항목에 pandas/_libs/src이 있는지 여부와 중복되지 않습니까? tslibcdef extern from "datetime/np_datetime_strings.h" 양식의 "가져 오기"가있는 datetime.pxd에서 직접 가져옵니다. sources에 "* .c"파일이 있거나 depends에 "* .h"파일이 있거나 또는 ...

순열을 시도했습니다. 이러한 종속성의 하위 집합을 제거하는 경우 빌드를 중단하는 패턴이 많지 않습니다.

답변

0

build_ext 명령의 경우 detailed docsthe source code을 참조하십시오.

sources은 확장을 컴파일하는 소스 파일 목록 (*.c)입니다.

depends - 확장 프로그램을 컴파일하는 데 필요한 추가 파일의 목록입니다.

include_dirs - 컴파일러가 찾는 디렉토리 목록 (헤더 파일 (*.h) 포함).

pxdfilesCython-specific입니다.