FindPythonLibs

3.27 版本变更:此模块仅在策略 CMP0148 未设置为 NEW 时可用。

3.12 版本已弃用:请改用 FindPython3FindPython2FindPython

此模块用于查找 Python 安装,并确定其包含目录和库的位置,以及用于链接的 Python 库名称。

注意

同时使用此模块和 FindPythonInterp 模块时,请在 find_package(PythonLibs) 之前调用 find_package(PythonInterp)。这可确保检测到的解释器版本用于指导兼容库的选择,从而获得一致的 PYTHON_LIBRARIES 值。

结果变量

此模块定义了以下变量

PythonLibs_FOUND

布尔值,指示是否已找到(请求版本的)Python 库。为向后兼容,PYTHONLIBS_FOUND 变量也设置为相同的值。

PYTHONLIBS_VERSION_STRING

找到的 Python 库的版本。

PYTHON_LIBRARIES

使用 Python 所需链接的库。

PYTHON_INCLUDE_DIRS

使用 Python 所需的包含目录。

缓存变量

以下缓存变量也可用于指定要使用的 Python 安装

PYTHON_LIBRARY

Python 库的路径。

PYTHON_INCLUDE_DIR

包含 Python.h 头文件的目录。

提示

此模块接受在调用 find_package(PythonLibs) 之前设置以下变量

Python_ADDITIONAL_VERSIONS

此变量可用于指定在查找 Python 时应考虑的版本号列表。

已弃用变量

这些变量是为向后兼容性提供的

PYTHON_DEBUG_LIBRARIES

2.8.8 版本已弃用:请改用 PYTHON_LIBRARIES

保存调试库路径的结果变量。

PYTHON_INCLUDE_PATH

2.8.0 版本已弃用:请改用 PYTHON_INCLUDE_DIRPYTHON_INCLUDE_DIRS

保存包含 Python.h 头文件的目录的路径的结果变量。

示例

在早期版本的 CMake 中,Python 库是在项目中这样找到和使用的

find_package(PythonLibs)
target_link_libraries(app PRIVATE ${PYTHON_LIBRARIES})
target_include_directories(app PRIVATE ${PYTHON_INCLUDE_DIRS})

从 CMake 3.12 开始,可以使用 FindPython 模块查找 Python 库。使用现代方法和导入目标(imported target)的等效示例是

find_package(Python COMPONENTS Development)
target_link_libraries(app PRIVATE Python::Python)