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.ModuleDevelopment.Embed

為了確保組件 InterpreterCompilerDevelopment(或其子組件之一)和 NumPy 之間版本一致,請同時指定所有組件

find_package (Python2 COMPONENTS Interpreter Development)

此模組僅尋找 Python 的版本 2。此模組可以與 FindPython3 模組同時使用,以使用兩個 Python 版本。

如果 Python 版本對您來說不重要,則可以使用 FindPython 模組。

注意

如果同時指定了組件 InterpreterDevelopment(或其子組件之一),則此模組僅搜尋與 CMake 設定定義的平台架構相同的直譯器。如果僅指定了 Interpreter 組件,則此限制不適用。

匯入的目標

此模組定義了以下 匯入的目標

在 3.14 版本變更:只有當 CMAKE_ROLEPROJECT 時,才會建立 匯入的目標

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_EXECUTABLEPython2_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 版本新增。

此變數定義如何處理由 virtualenvconda 管理的虛擬環境。只有在虛擬環境處於活動狀態時(即已評估 activate 腳本時),此變數才有意義。在這種情況下,它會優先於 Python2_FIND_REGISTRYCMAKE_FIND_FRAMEWORK 變數。Python2_FIND_VIRTUALENV 變數可以設定為下列其中一個值:

  • FIRST:在任何其他標準路徑之前,會先使用虛擬環境來查找直譯器。這是預設值。

  • ONLY:僅使用虛擬環境來查找直譯器。

  • STANDARD:不使用虛擬環境來查找直譯器,但會始終考慮環境變數 PATH。在這種情況下,可以將變數 Python2_FIND_REGISTRY (Windows) 或 CMAKE_FIND_FRAMEWORK (macOS) 設定為值 LASTNEVER,以便優先從虛擬環境中選擇直譯器。

在 3.17 版本中新增:新增了對 conda 環境的支援。

注意

如果請求了元件 Development,則**強烈**建議也包含元件 Interpreter,以獲得預期的結果。

Python2_FIND_IMPLEMENTATIONS

在 3.18 版本新增。

此變數定義將搜尋的不同實作 (按順序排列的清單)。Python2_FIND_IMPLEMENTATIONS 變數可以保存以下值:

  • CPython:這是標準實作。各種產品(例如 AnacondaActivePython)都依賴此實作。

  • IronPython:此實作在 動態語言執行階段 (DLR) 之上使用 CSharp 語言來處理 .NET Framework。請參閱 IronPython

  • PyPy:此實作使用 RPython 語言和 RPython 翻譯 工具鏈來產生 Python 直譯器。請參閱 PyPy

預設值為:

  • Windows 平台:CPythonIronPython

  • 其他平台:CPython

注意

此提示的優先順序在所有提示中最低,因此即使您首先指定 IronPython,然後指定 CPython,也可能會選取基於 CPython 的 Python 產品,因為例如,使用 Python2_FIND_STRATEGY=LOCATION 時,每個位置都會先搜尋 IronPython,然後搜尋 CPython

注意

當指定 IronPython 時,在 Windows 以外的平台上,預期 .Net 直譯器(即 mono 命令)可透過 PATH 變數取得。

Python2_FIND_UNVERSIONED_NAMES

在 3.20 版本中新增。

此變數定義如何搜尋通用名稱。目前,它僅適用於直譯器的通用名稱,也就是 python2pythonPython2_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_LIBRARIESPython2_LIBRARY_DIRSPython2_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_ROLEPROJECT 時),該命令具有與 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 變數的值初始化(如果已定義)。