Настройте boost-python с помощью setuptools - PullRequest
0 голосов
/ 22 февраля 2019

Я пишу расширение 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.Но это не очень питонично.

...