2011-11-14 41 views
5

我有一個主要用C++編寫的項目,其中包含一些用python編寫的幫助程序腳本。目前,該腳本包含由自動工具取代變量:autotools和python setup.py

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

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

,這裏是Makefile.am的摘錄:

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嗎?否則,我該如何將啓動setup.py集成到Makefile.am中?

回答

2

我會使用autoconf來設置script.py,而不是'make',正如你所示。例如:

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

在configure.ac中的AC_OUTPUT之前應該這樣做。

+0

好點,這會自動進行替換。但是,它並沒有真正幫助python依賴。 – hpixel

+0

我只是在閱讀文檔目錄變量沒有完全由AC_CONFIG_FILES擴展,所以這不適用於$(pkgdatadir)。 – hpixel

+0

我錯了。我的答案不適用於pkgdatadir,因爲它在安裝時得到設置。 – ldav1s