Я пишу расширение Python с использованием Boost-Python.В моем файле setup.py я написал:
from setuptools import setup, Extension
extension = Extension(
...,
libraries=['boost_python37', ...]
)
setup(
...,
ext_modules=[extension]
)
Но boost_python37
жестко запрограммирован.Как я могу проверить систему, чтобы найти нужную библиотеку boost-python?
В некоторых системах есть несколько версий python, поэтому использование boost_python
не является правильным решением.
Использование короткого pythonверсия не является правильным решением, в CentOS 6 есть только boost_python
, нет boost_python26
.
В прошлом я использовал autoconf для сборки моего модуля и проверки системы на boost-python.
В configure.ac
:
# Boost
AX_BOOST_BASE([1.56],, [AC_MSG_ERROR([Needs Boost, but it was not found in your system])])
# Boost Python
AX_BOOST_PYTHON
if test "$ac_cv_boost_python" != "yes"; then
AC_MSG_ERROR([Boost Python needed])
fi
Он отлично работает, и тогда я могу использовать BOOST_CPPFLAGS
, BOOST_LDFLAGS
и BOOST_PYTHON_LIB
в моих Makefile.am
:
extension_la_CPPFLAGS = -I$(top_srcdir)/include $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS) $(BOOST_CPPFLAGS)
extension_la_LDFLAGS = -module -avoid-version -shared -rpath / $(BOOST_LDFLAGS)
extension_la_LIBADD = $(BOOST_PYTHON_LIB) $(BOOST_FILESYSTEM_LIB)
С этим я могу собрать свой модуль на CentOS 6 с Python 2.6 и на Ubuntu с Python 2.x или 3.x.Но это не очень питонично.