CMake 在 20.04 下找到错误的 Python 库 3.8 标头

CMake 在 20.04 下找到错误的 Python 库 3.8 标头

我最近从 18.04 升级到 20.04,并且使用 boost python 的项目不再构建。

问题在于以下 CMake 命令:

find_package(PythonLibs 3)

设置${PYTHON_INCLUDE_DIRS}/usr/include/python3.6m。问题是,20.4 中没有libpython3.6-dev,因此该位置没有标题。但是我有libpython3.8-dev

即使我将上述内容更改find_package(PythonLibs 3.8)

[cmake] Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.6m.so (Required is at least version "3.8") 

与之前包含相同的目录。

我可以手动操作set(PYTHON_INCLUDE_DIRS /usr/include/python3.8),一切都构建得很好,所以看起来这真的只是find_package行为出乎意料。这里出了什么问题?

答案1

经过一番挖掘,我find_package(PythonLibs)意识到已弃用自 CMake 3.12 以来(与我升级到 20.04 一致)。find_package(Python 3.8 COMPONENTS Interpreter Development)改为使用 可以找到正确的标头。

相关内容