CMake C++ 库包含工具链名称
CMake C++ library includes toolchain name
我正在使用 pybind11 和 scikit-build 在 C++ 中构建一个 Python 扩展。我基于 https://github.com/pybind/scikit_build_example/blob/master/setup.py.
中提供的示例
我的 CMakelists 归结为:
pybind11_add_module(_mylib MODULE ${SOURCE_FILES})
install(TARGETS _mylib DESTINATION .)
setup.py:
setup(
name="mylib",
version="0.0",
packages=['mylib'],
cmake_install_dir="mylib",
)
在 python 方面我有 mylib/__init__.py
:
from _mylib import *
这一切都很好。我可以使用 pip 安装包并导入 mylib
通过代理成功导入库。这个代理是必要的,因为我在库中做的不仅仅是 C++ 库。
除了有一个问题。构建库的名称包括工具链。对于我的系统,它看起来像 _mylib.cpython-38-x86_64-linux-gnu.so
,而我期望 _mylib.so
。 __init__.py
找不到库,除非我在 python 端手动重命名它或更改 so 名称。
我该如何解决这个问题?
结论:正如Alex所说,这部分名字是必须的。参见 https://www.python.org/dev/peps/pep-3149/。如果您导入 _mylib
.
,Python 会自动计算出它可以使用 _mylib.cpython-38-x86_64-linux-gnu.so
我正在使用 pybind11 和 scikit-build 在 C++ 中构建一个 Python 扩展。我基于 https://github.com/pybind/scikit_build_example/blob/master/setup.py.
中提供的示例我的 CMakelists 归结为:
pybind11_add_module(_mylib MODULE ${SOURCE_FILES})
install(TARGETS _mylib DESTINATION .)
setup.py:
setup(
name="mylib",
version="0.0",
packages=['mylib'],
cmake_install_dir="mylib",
)
在 python 方面我有 mylib/__init__.py
:
from _mylib import *
这一切都很好。我可以使用 pip 安装包并导入 mylib
通过代理成功导入库。这个代理是必要的,因为我在库中做的不仅仅是 C++ 库。
除了有一个问题。构建库的名称包括工具链。对于我的系统,它看起来像 _mylib.cpython-38-x86_64-linux-gnu.so
,而我期望 _mylib.so
。 __init__.py
找不到库,除非我在 python 端手动重命名它或更改 so 名称。
我该如何解决这个问题?
结论:正如Alex所说,这部分名字是必须的。参见 https://www.python.org/dev/peps/pep-3149/。如果您导入 _mylib
.
_mylib.cpython-38-x86_64-linux-gnu.so