簡體   English   中英

如何使用 CMake 找到 python 解釋器和庫的最低版本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM