2011-11-14 2 views
5

저는 주로 python으로 작성된 몇 가지 도우미 스크립트가 포함 된 프로젝트를 C++로 작성했습니다. Makefile.am의 추출물을 여기autotools 및 python setup.py

#[email protected]@ 
# -*- coding: utf-8 -*- 
... 

try: 
    datapath = os.environ['DATA_PATH'] 
except KeyError: 
    datapath = '@[email protected]' 

그리고있다 : 순간의 경우, 스크립트는 autotools를 치환 변수를 포함

BUILT_SOURCES = script.py 
nodist_python_PYTHON = script.py 
CLEANFILES = $(python_PYTHON) 
EXTRA_DIST = script.py.in 

do_subst = sed -e 's,[@]PYTHON[@],$(PYTHON),g'\ 
      -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' 

script.py: script.py.in 
    $(do_subst) < $< > [email protected] 
chmod +x [email protected] 

이 스크립트 아마 더 나은 것 또한 몇 가지 모듈 종속성이 setup.py 스크립트에 의해 처리됩니다.

그럼 autotools와 python distutils 도구를 혼합하는 가장 좋은 방법은 무엇입니까? 내가 autotools에 전적으로 의존해야합니까? 그렇지 않으면 어떻게 Makefile.am에서 setup.py의 시작을 통합 할 수 있습니까?

답변

2

필자는 autoconf를 사용하여 표시된 것처럼 'make'대신 script.py를 설정하려고합니다. 예 :

AC_CONFIG_FILES([script.py], [chmod +x script.py]) 

configure.ac에서 AC_OUTPUT을 수행해야합니다.

+0

좋은 점은 자동으로 대체를 수행합니다. 그러나, 그것은 파이썬 의존성에 도움이되지 않습니다. – hpixel

+0

난 디렉토리 변수가 AC_CONFIG_FILES에 의해 완전히 확장되지 않았기 때문에 $ (pkgdatadir)에서는 잘 동작하지 않는다. – hpixel

+0

내가 틀 렸습니다. 설치시 설치가 이루어지기 때문에 pkgdatadir에서 내 대답은 작동하지 않습니다. – ldav1s

관련 문제