使用autotools构建和安装多个版本的Python

使用autotools构建和安装多个版本的Python,python,build-process,autotools,automake,Python,Build Process,Autotools,Automake,我正试图找出如何为多个版本的Python构建我的项目。 我在Debian wheezy上测试这个,Python的默认版本是2.7。 但也支持并安装了2.6。然而,汽车制造商只是在安装 以及为Python 2.7编译。我希望它也能编译成2.6版本 下面是configure.ac和Makefile.am。如有必要,我可以提供更多细节,但希望这些就足够了 我是自动工具的初学者,所以可能有一些显而易见的解决方案 这似乎是一个愿望清单错误: . 还有 这里有一个类似的讨论: 还有一个建议的解决方案(看起来

我正试图找出如何为多个版本的Python构建我的项目。 我在Debian wheezy上测试这个,Python的默认版本是2.7。 但也支持并安装了2.6。然而,汽车制造商只是在安装 以及为Python 2.7编译。我希望它也能编译成2.6版本

下面是configure.ac和Makefile.am。如有必要,我可以提供更多细节,但希望这些就足够了

我是自动工具的初学者,所以可能有一些显而易见的解决方案

这似乎是一个愿望清单错误: . 还有 这里有一个类似的讨论:

还有一个建议的解决方案(看起来很复杂),在

这是configure.ac

##################################################################################
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT([corrmodel], [0.1], [faheem@faheem.info])
AM_INIT_AUTOMAKE([foreign -Wall -Werror -Wno-extra-portability parallel-tests])
AM_MAINTAINER_MODE
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AM_PATH_PYTHON([2.6])

# Checks for libraries.
AX_BOOST_BASE
AX_BOOST_PYTHON

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

#AC_CONFIG_SUBDIRS([hello/hello-2.9])
LT_INIT
AC_OUTPUT
##################################################################################
这里是Makefile.am

##################################################################################
# Define primaries
noinst_LTLIBRARIES = libcommon.la
dist_sysconf_DATA = corrmodel/default_conf.yaml

COMMON_CPPFLAGS = -I /usr/include/python$(PYTHON_VERSION) -L/usr/lib/python$(PYTHON_VERSION)/config -ftemplate-depth-100 -fno-strict-aliasing -fno-common -ansi -Wextra -Wall -Werror -Wno-unused-function -Wc++0x-compat -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -std=c++11 -march=native -mtune=native -mfpmath=sse -msse3 -O3 -DBOOST_PYTHON_DYNAMIC_LIB -DBOOST_PYTHON_MAX_ARITY=20
libcommon_la_SOURCES = randutil.cc util.cc gendata_fn.cc model.cc score_fn.cc search_fn.cc pval.cc print.cc \
                       common.hh util.hh model.hh gendata_fn.hh randutil.hh score_fn.hh search_fn.hh pval.hh \
                       print.hh
COMMON_LDFLAGS = -lblitz -lRmath -lpython$(PYTHON_VERSION) -lm -lboost_python
libcommon_la_CPPFLAGS = $(COMMON_CPPFLAGS)
#libcommon_la_LDFLAGS = $(COMMON_LDFLAGS)

# name of Python library.
# See http://www.gnu.org/software/automake/manual/html_node/Python.html
pkgpyexec_LTLIBRARIES = cpplib.la
cpplib_la_SOURCES = cpparr_conv_pif.cc cppmap_conv_pif.cc cpppair_conv_pif.cc cppset_conv_pif.cc cpptup_conv_pif.cc \
                    cppvec_conv_pif.cc cppunicode_conv_pif.cc util_pif.cc gendata_fn_pif.cc model_pif.cc score_fn_pif.cc \
                    search_fn_pif.cc pval_pif.cc main.cc conv_pif.hh util_pif.hh gendata_fn_pif.hh score_fn_pif.hh search_fn_pif.hh
cpplib_la_CPPFLAGS = $(COMMON_CPPFLAGS)
cpplib_la_LDFLAGS = -module -avoid-version -share $(COMMON_LDFLAGS)

cpplib_la_LIBADD = libcommon.la

ACLOCAL_AMFLAGS = -I m4

pkgpython_PYTHON =  corrmodel/dbschema.py corrmodel/__init__.py corrmodel/init_schema.py  corrmodel/modeldist.py corrmodel/crossval.py corrmodel/dbutils.py corrmodel/getmodel.py corrmodel/load.py corrmodel/utils.py

##################################################################################

Automake的工作是创建一个构建系统,该系统由一个
configure
脚本和一组Makefiles组成,这些Makefiles以适当的细节级别检测构建环境的属性,以便为该构建环境构建软件包

构建环境可能只是一组特定的选项,用于
配置
以使用不同的选项运行编译器。或者在同一台机器上使用不同的编译器运行。或者在另一个操作系统中的容器或VM中,或者在装满构建服务器场的两个机架上

定义、设置、访问和维护这些不同的构建环境超出了Automake的范围。你需要借助于你想要使用的任何一套工具来完成这项工作


然后,您可以(或让您的专用工具集)在这些不同的构建环境中运行Automake生成的构建系统来构建软件包。

您找到解决方案了吗?我正在寻找一个需要与python2和python3Hi@matt合作的项目。很久以前,我甚至不记得写过这个问题,但我想我从来没有找到过答案。如果你找到了答案,请把它贴出来。谢谢。所有这些都是真的,但乍一看,问题似乎更简单:OP正在构建一个Python2.7源代码发行版,因此当然Python2.7就是他们得到的。你不能通过修改构建系统来改变这一点。相反,您通常需要为要安装的每个软件版本获取并构建单独的源发行版。当然,这个问题已经有5年多的历史了,因此可能不值得付出任何努力。