[英]How to find minimum versions of python interpreter and libs using CMake
我正在使用 pybind11 和 CMake 構建 C 擴展。 我曾經這樣做過:
find_package(Python3 3.7 REQUIRED)
find_package(PythonLibs 3.7 REQUIRED)
沒有任何問題。 現在我需要 python 3.8 並將其更改為:
find_package(PythonInterp 3.8 REQUIRED)
find_package(PythonLibs 3.8 REQUIRED)
但是,盡管 libpython3.8.so 與 libpython3.7m.so 位於同一文件夾中,但 CMake 沒有找到它。 它返回:
Could NOT find PythonLibs: Found unsuitable version "3.7.5", but required
is at least "3.8" (found /usr/lib/x86_64-linux-gnu/libpython3.7m.so)
在研究這個時,我注意到 PytonInterp 和 PythonLibs 自 CMake 3.12 以來已被棄用,而 FindPython 是首選。 所以我嘗試了:
find_package(Python3)
這會找到我的 python 3.8 解釋器,但不是我的 python 3.8 庫。 因此,我仍然不能使用 package,因為
mypy.cpython-37m-x86_64-linux-gnu.so
基於 python 3.7 庫。 如何確保它也能找到我的 3.8 庫? 如前所述,它們位於同一個文件夾中。
FindPython模塊的文檔指出:
如果未指定
COMPONENTS
,則假定為Interpreter
器。
所以,是的,因為您沒有指定任何COMPONENTS
,所以只能找到解釋器。
如果您希望 CMake 找到 Python包含目錄和庫,則應指定Development
:
find_package(Python3 COMPONENTS Interpreter Development)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.