我最近从 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)
改为使用 可以找到正确的标头。