FindPython2¶
从版本 3.12 中添加。
查找 Python 2 解释器、编译器和开发环境(包含目录和库)。
3.19 版中新增: 当请求版本时,可以将其指定为简单值或范围。有关版本范围用法和功能的详细说明,请参阅 find_package()
命令。
支持以下组件
Interpreter
:搜索 Python 2 解释器Compiler
:搜索 Python 2 编译器。仅由 IronPython 提供。Development
:搜索开发工件(包含目录和库)。3.18 版中新增: 此组件包含两个子组件,可以独立指定
Development.Module
:搜索 Python 2 模块开发的工件。Development.Embed
:搜索 Python 2 嵌入开发的工件。
NumPy
:搜索 NumPy 包含目录。
3.14 版中新增: 添加了 NumPy
组件。
如果未指定 COMPONENTS
,则假定为 Interpreter
。
如果指定了 Development
组件,则这意味着子组件 Development.Module
和 Development.Embed
。
为确保组件 Interpreter
、Compiler
、Development
(或其子组件之一)和 NumPy
之间的版本一致,请同时指定所有组件
find_package (Python2 COMPONENTS Interpreter Development)
此模块仅查找 Python 2 版本。此模块可与 FindPython3
模块同时使用,以同时使用 Python 的两个版本。
FindPython
模块在 Python 版本对你来说不重要时可以使用。
请注意
如果同时指定组件 Interpreter
和 Development
(或其子组件之一),则此模块仅搜索与 CMake 配置定义的平台架构相同的解释器。如果仅指定 Interpreter
组件,此约束不适用。
导入目标¶
此模块定义以下 导入目标
在版本 3.14 中修改: 导入目标仅当 CMAKE_ROLE
是 PROJECT
时才会创建。
Python2::Interpreter
Python 2 解释器。仅当找到
Interpreter
组件时才会定义此目标。Python2::InterpreterDebug
在版本 3.30 中添加。
Python 2 调试解释器。仅当找到
Interpreter
组件且已定义Python2_EXECUTABLE_DEBUG
变量时才会定义此目标。此目标仅在Windows
平台上定义。Python2::InterpreterMultiConfig
在版本 3.30 中添加。
Python 2 解释器。将根据上下文(平台、配置)使用解释器的版本或调试版本。仅当找到
Interpreter
组件时才会定义此目标。Python2::Compiler
Python 2 编译器。仅当找到
Compiler
组件时才会定义此目标。Python2::Module
在版本 3.15 中添加。
Python 模块的 Python 2 库。如果找到组件
Development.Module
,则会定义目标。Python2::Python
用于 Python 嵌入的 Python 2 库。如果找到组件
Development.Embed
,则会定义目标。Python2::NumPy
在版本 3.14 中添加。
Python 2 的 NumPy 库。如果找到组件
NumPy
,则会定义目标。
结果变量¶
此模块将在您的项目中设置以下变量(请参阅 标准变量名称)
Python2_FOUND
系统具有 Python 2 请求的组件。
Python2_Interpreter_FOUND
系统具有 Python 2 解释器。
Python2_EXECUTABLE
Python 2 解释器的路径。
Python2_EXECUTABLE_DEBUG
在版本 3.30 中添加。
调试 Python 2 解释器的路径。它仅在
Windows
平台上定义。Python2_INTERPRETER
在版本 3.30 中添加。
Python 2 解释器的路径,定义为选择
Python2_EXECUTABLE
或Python2_EXECUTABLE_DEBUG
变量的generator expression
基于上下文(平台、配置)。Python2_INTERPRETER_ID
- 解释器特有的短字符串。可能的值包括
Python
ActivePython
Anaconda
Canopy
IronPython
PyPy
Python2_STDLIB
标准的平台无关安装目录。
由
sysconfig.get_path('stdlib')
或distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)
返回的信息。Python2_STDARCH
标准的平台相关安装目录。
由
sysconfig.get_path('platstdlib')
或distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)
返回的信息。Python2_SITELIB
第三方平台无关安装目录。
返回由
sysconfig.get_path('purelib')
或distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)
提供的信息。Python2_SITEARCH
第三方平台依赖的安装目录。
返回由
sysconfig.get_path('platlib')
或distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)
提供的信息。Python2_Compiler_FOUND
系统拥有 Python 2 编译器。
Python2_COMPILER
Python 2 编译器的路径。仅由 IronPython 提供。
Python2_COMPILER_ID
- 编译器特有的短字符串。可能的值包括
IronPython
Python2_DOTNET_LAUNCHER
3.18 版中新增。
.Net
解释器。仅用于IronPython
实现。Python2_Development_FOUND
系统拥有 Python 2 开发制品。
Python2_Development.Module_FOUND
3.18 版中新增。
系统拥有 Python 模块的 Python 2 开发制品。
Python2_Development.Embed_FOUND
3.18 版中新增。
系统拥有 Python 嵌入式的 Python 2 开发制品。
Python2_INCLUDE_DIRS
Python 2 include 目录。
Python2_DEBUG_POSTFIX
调试 python 模块的后缀。此变量可用于定义
DEBUG_POSTFIX
目标属性。Python2_LINK_OPTIONS
3.19 版中新增。
Python 2 链接选项。某些配置需要特定链接选项才能正确构建和执行。
Python2_LIBRARIES
Python 2 库。
Python2_LIBRARY_DIRS
Python 2 库目录。
Python2_RUNTIME_LIBRARY_DIRS
Python 2 运行时库目录。
Python2_VERSION
Python 2 版本。
Python2_VERSION_MAJOR
Python 2 主版本。
Python2_VERSION_MINOR
Python 2 次要版本。
Python2_VERSION_PATCH
Python 2 补丁版本。
Python2_PyPy_VERSION
3.18 版中新增。
Python 2 PyPy 版本。
Python2_NumPy_FOUND
在版本 3.14 中添加。
系统拥有 NumPy。
Python2_NumPy_INCLUDE_DIRS
在版本 3.14 中添加。
NumPy include 目录。
Python2_NumPy_VERSION
在版本 3.14 中添加。
NumPy 版本。
提示¶
Python2_ROOT_DIR
定义 Python 2 安装的根目录。
Python2_USE_STATIC_LIBS
如果没有定义,则按顺序搜索共享库和静态库。
如果设置为 TRUE,仅搜索静态库。
如果设置为 FALSE,仅搜索共享库。
请注意
此提示在
Windows
上将被忽略,因为该平台上没有静态库。Python2_FIND_STRATEGY
在版本 3.15 中添加。
此变量定义查找方式。
Python2_FIND_STRATEGY
变量可以设置为以下值之一VERSION
: 在所有指定的位置尝试找到最新版本。如果策略CMP0094
未定义或设置为OLD
,则默认为此选项。LOCATION
: 在找到符合版本条件的版本后立即停止查找。如果策略CMP0094
设置为NEW
,则默认为此选项。
另请参阅
Python2_FIND_UNVERSIONED_NAMES
。Python2_FIND_REGISTRY
3.13 版中新增。
在 Windows 上,
Python2_FIND_REGISTRY
变量确定注册表和环境变量之间的优先顺序。Python2_FIND_REGISTRY
变量可设置为以下之一FIRST
: 尝试在环境变量之前使用注册表。这是默认设置。LAST
: 尝试在环境变量之后使用注册表。NEVER
: 绝不尝试使用注册表。
Python2_FIND_FRAMEWORK
在版本 3.15 中添加。
在 macOS 上,
Python2_FIND_FRAMEWORK
变量确定 Apple 风格和 Unix 风格包组件之间的优先顺序。此变量可以采用与CMAKE_FIND_FRAMEWORK
变量相同的值。请注意
不支持值
ONLY
,所以会改用FIRST
。如果没有定义
Python2_FIND_FRAMEWORK
,则会使用CMAKE_FIND_FRAMEWORK
变量(如果存在)。Python2_FIND_VIRTUALENV
在版本 3.15 中添加。
此变量定义由
virtualenv
或conda
管理的虚拟环境的处理方式。仅在虚拟环境处于活动状态时才有意义(即已计算出activate
脚本)。在这种情况下,它优先于Python2_FIND_REGISTRY
和CMAKE_FIND_FRAMEWORK
变量。Python2_FIND_VIRTUALENV
变量可设置为以下之一FIRST
: 在查找解释程序之前使用虚拟环境,然后再查找其他任何标准路径。这是默认设置。ONLY
: 仅使用虚拟环境查找解释程序。STANDARD
: 不使用虚拟环境查找解释程序,但始终考虑环境变量PATH
。在这种情况下,可以将变量Python2_FIND_REGISTRY
(Windows)或CMAKE_FIND_FRAMEWORK
(macOS)设置为值LAST
或NEVER
,以优先从虚拟环境中选择解释程序。
在 3.17 版中添加: 添加对
conda
环境的支持。请注意
如果请求组件
Development
,则强烈建议同时包括组件Interpreter
以为获得预期结果。Python2_FIND_IMPLEMENTATIONS
3.18 版中新增。
此变量按顺序列表示将要搜索的不同实现。
Python2_FIND_IMPLEMENTATIONS
变量可包含以下值CPython
:这是标准实现。各种产品(如Anaconda
或ActivePython
)都依赖于此实现。IronPython
:此实现使用CSharp
语言为.NET Framework
使用Dynamic Language Runtime
(DLR
)。请参阅 IronPython。PyPy
:此实现使用RPython
语言和RPython translation toolchain
生成 Python 解释器。请参阅 PyPy。
默认值为
Windows 平台:
CPython
,IronPython
其他平台:
CPython
请注意
此提示的优先级是所有提示中最低的,因此即使您指定了
IronPython
在第一位而CPython
在第二位,基于CPython
的 Python 产品仍可能被选中,例如使用Python2_FIND_STRATEGY=LOCATION
时,每个位置都会先搜索IronPython
再搜索CPython
。请注意
在
IronPython
指定为Windows
以外の平台时,希望通过PATH
变量可以使用.Net
解释器(即mono
命令)。Python2_FIND_UNVERSIONED_NAMES
在 3.20 版中添加。
此变量定义了如何搜索泛型名称。目前,它仅应用于解释器的泛型名称,即
python2
和python
。Python2_FIND_UNVERSIONED_NAMES
变量可以设置为以下值之一FIRST
:泛型名称在更专业的名称(例如python2.5
)之前搜索。LAST
:泛型名称在更专业的名称之后搜索。这是默认值。NEVER
:根本不搜索泛型名称。
另请参阅
Python2_FIND_STRATEGY
。
Artifact 规范¶
在 3.16 版中添加。
要解决特殊情况,可以通过设置以下变量直接指定 Artifact
Python2_EXECUTABLE
解释器路径。
Python2_COMPILER
编译器路径。
Python2_DOTNET_LAUNCHER
3.18 版中新增。
.Net
解释器。仅用于IronPython
实现。Python2_LIBRARY
指向库的路径。它将用于计算变量
Python2_LIBRARIES
、Python2_LIBRARY_DIRS
和Python2_RUNTIME_LIBRARY_DIRS
。Python2_INCLUDE_DIR
指向
Python
头文件目录的路径。它将用于计算变量Python2_INCLUDE_DIRS
。Python2_NumPy_INCLUDE_DIR
指向
NumPy
头文件目录的路径。它将用于计算变量Python2_NumPy_INCLUDE_DIRS
。
请注意
所有路径必须是绝对路径。任何指定为相对路径的工件都将被忽略。
请注意
当指定一个工件时,所有 HINTS
都将被忽略,并且不会针对此工件执行搜索。
如果指定了多个工件,则用户负责确保各种工件的一致性。
默认情况下,此模块支持对项目中的不同目录进行多次调用,这些目录具有不同的版本/组件要求,同时为每次调用提供正确且一致的结果。为了支持此行为,CMake 缓存未以传统方式使用,这可能对交互式规范造成问题。因此,为启用交互式规范,可以使用以下变量控制模块行为
Python2_ARTIFACTS_INTERACTIVE
3.18 版中新增。
选择模块的行为。这是一个布尔变量
如果设置为
TRUE
:为上述工件规范变量创建 CMake 缓存条目,以便用户可以交互式地编辑它们。这会禁用对多个版本/组件要求的支持。如果设置为
FALSE
或未定义:启用多个版本/组件要求。
命令¶
此模块定义了命令 Python2_add_library
(在 CMAKE_ROLE
为 PROJECT
时),该命令具有与 add_library()
相同的语义,并且会向目标 Python2::Python
或(如果库类型为 MODULE
)向目标 Python2::Module
添加依赖项,并处理 Python 模块命名规则
Python2_add_library (<name> [STATIC | SHARED | MODULE]
<source1> [<source2> ...])
如果未指定库类型,则假定为 MODULE
。
在 3.30 版中添加: 对于 MODULE
类型,如果定义了 Python2_DEBUG_POSTFIX
变量,则 DEBUG_POSTFIX
目标属性将通过其值进行初始化。