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 兩個版本。
如果 Python 版本對您而言並不重要,則可以使用 FindPython
模組。
注意
如果同時指定了組件 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
變數。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 包含目錄。
Python2_DEBUG_POSTFIX
版本 3.30 新增。
除錯 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 包含目錄。
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 轉換 工具鏈
來產生 python 直譯器。 請參閱 PyPy。
預設值為
Windows 平台:
CPython
、IronPython
其他平台:
CPython
注意
此提示的優先順序最低,因此即使您例如先指定
IronPython
,然後指定CPython
,也可能選擇基於CPython
的 python 產品,例如使用Python2_FIND_STRATEGY=LOCATION
,每個位置將首先搜尋IronPython
,然後搜尋CPython
。注意
當指定
IronPython
時,在Windows
以外的平台上,預期.Net
直譯器(即mono
命令)可透過PATH
變數取得。Python2_FIND_UNVERSIONED_NAMES
版本 3.20 新增。
此變數定義了將如何搜尋通用名稱。 目前,它僅適用於直譯器的通用名稱,即
python2
和python
。Python2_FIND_UNVERSIONED_NAMES
變數可以設定為以下值之一FIRST
:在搜尋更專業的名稱(例如python2.5
)之前,先搜尋通用名稱。LAST
:在搜尋更專業的名稱之後,再搜尋通用名稱。 這是預設值。NEVER
:完全不搜尋通用名稱。
另請參閱
Python2_FIND_STRATEGY
。
產物規格¶
版本 3.16 新增。
為了處理特殊情況,可以直接透過設定以下變數來指定產物
Python2_EXECUTABLE
Python2_EXECUTABLE
Python2_COMPILER
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_ARTIFACTS_PREFIX
版本 4.0 新增。
定義一個自訂前綴,該前綴將用於定義所有結果變數、目標和命令。 透過使用此變數,此模組支援在同一目錄中進行多次呼叫,並具有不同的版本/組件要求。 例如,在交叉編譯的情況下,需要開發組件,但也可能需要原生 python 直譯器
find_package(Python2 COMPONENTS Development) set(Python2_ARTIFACTS_PREFIX "_HOST") find_package(Python2 COMPONENTS Interpreter) # Here Python2_HOST_EXECUTABLE and Python2_HOST::Interpreter artifacts are defined
注意
為了與模組的標準行為保持一致,各種標準
_FOUND
變數(即沒有自訂前綴)也由對find_package()
命令的每次呼叫定義。
命令¶
此模組定義了命令 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
類型,如果定義了 DEBUG_POSTFIX
目標屬性,則使用 Python2_DEBUG_POSTFIX
變數的值初始化。