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
除錯 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
:此實作在 動態語言執行階段 (DLR
) 之上使用CSharp
語言來處理.NET Framework
。請參閱 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_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
類型,DEBUG_POSTFIX
目標屬性會以 Python2_DEBUG_POSTFIX
變數的值初始化(如果已定義)。