Spec-Zone.ru › CMake 3.29

FindPython3

Новое в версии 3.12.

Найти интерпретатор Python 3, компилятор и среду разработки (каталоги включаемых файлов и библиотеки).

Новое в версии 3.19: Когда запрашивается версия, она может быть указана как простое значение или как диапазон. Для подробного описания использования и возможностей диапазона версий обратитесь к команде find_package().

Поддерживаются следующие компоненты:

  • Interpreter: поиск интерпретатора Python 3
  • Compiler: поиск компилятора Python 3. Предлагается только IronPython.
  • Development: поиск артефактов разработки (каталоги включаемых файлов и библиотеки).

    Новое в версии 3.18: Этот компонент включает два подкомпонента, которые можно указывать независимо:

    • Development.Module: поиск артефактов для разработки модулей Python 3.
    • Development.Embed: поиск артефактов для разработки встраивания Python 3.

    Новое в версии 3.26:

    • Development.SABIModule: поиск артефактов для разработки модулей Python 3 с использованием Stable Application Binary Interface. Этот компонент доступен только для версии 3.2 и выше.
  • NumPy: поиск каталогов включаемых файлов NumPy.

Новое в версии 3.14: Добавлен компонент NumPy.

Если не указаны COMPONENTS, предполагается Interpreter.

Если указан компонент Development, подразумеваются подкомпоненты Development.Module и Development.Embed.

Для обеспечения согласованных версий между компонентами Interpreter, Compiler, Development (или одним из его подкомпонентов) и NumPy, укажите все компоненты одновременно:

find_package (Python3 COMPONENTS Interpreter Development)

Этот модуль ищет только версии 3 Python. Этот модуль можно использовать совместно с модулем FindPython2 для использования обеих версий Python.

Модуль FindPython можно использовать, если версия Python не имеет значения.

Примечание

Если компоненты Interpreter и Development (или один из его подкомпонентов) оба указаны, этот модуль ищет только интерпретатор с той же архитектурой платформы, что и определена конфигурацией CMake. Это ограничение не применяется, если указан только компонент Interpreter.

Импортированные цели

Этот модуль определяет следующие Импортированные цели:

Изменено в версии 3.14: Импортированные цели создаются только тогда, когда CMAKE_ROLE имеет значение PROJECT.

Python3::Interpreter

Интерпретатор Python 3. Цель определена, если компонент Interpreter найден.

Python3::Compiler

Компилятор Python 3. Цель определена, если компонент Compiler найден.

Python3::Module

Новое в версии 3.15.

Библиотека Python 3 для модуля Python. Цель определена, если компонент Development.Module найден.

Python3::SABIModule

Новое в версии 3.26.

Библиотека Python 3 для модуля Python, использующая Stable Application Binary Interface. Цель определена, если компонент Development.SABIModule найден.

Python3::Python

Библиотека Python 3 для встраивания Python. Цель определена, если компонент Development.Embed найден.

Python3::NumPy

Новое в версии 3.14.

Библиотека NumPy для Python 3. Цель определена, если компонент NumPy найден.

Переменные результатов

Этот модуль установит следующие переменные в вашем проекте (см. Стандартные имена переменных):

Python3_FOUND

Система имеет запрошенные компоненты Python 3.

Python3_Interpreter_FOUND

Система имеет интерпретатор Python 3.

Python3_EXECUTABLE

Путь к интерпретатору Python 3.

Python3_INTERPRETER_ID
Короткая строка, уникальная для интерпретатора. Возможные значения:
  • Python
  • ActivePython
  • Anaconda
  • Canopy
  • IronPython
  • PyPy
Python3_STDLIB

Стандартный независимый от платформы каталог установки.

Информация, возвращаемая sysconfig.get_path('stdlib').

Python3_STDARCH

Стандартный зависимый от платформы каталог установки.

Информация, возвращаемая sysconfig.get_path('platstdlib').

Python3_SITELIB

Трехсторонняя независимая от платформы директория установки.

Информация, возвращаемая sysconfig.get_path('purelib').

Python3_SITEARCH

Трехсторонняя зависимая от платформы директория установки.

Информация, возвращаемая sysconfig.get_path('platlib').

Python3_SOABI

Новое в версии 3.17.

Суффикс расширения для модулей.

Информация, вычисленная из sysconfig.get_config_var('EXT_SUFFIX') или sysconfig.get_config_var('SOABI') или python3-config --extension-suffix.

Python3_SOSABI

Новое в версии 3.26.

Суффикс расширения для модулей, использующих Stable Application Binary Interface.

Информация, вычисленная из importlib.machinery.EXTENSION_SUFFIXES, если компонент Interpreter был указан. В противном случае, расширение равно abi3, за исключением Windows, MSYS и CYGWIN, для которых это пустая строка.

Python3_Compiler_FOUND

Система имеет компилятор Python 3.

Python3_COMPILER

Путь к компилятору Python 3. Предлагается только IronPython.

Python3_COMPILER_ID
Короткая строка, уникальная для компилятора. Возможные значения:
  • IronPython
Python3_DOTNET_LAUNCHER

Новое в версии 3.18.

Интерпретатор .Net. Используется только реализацией IronPython.

Python3_Development_FOUND

Система имеет артефакты разработки Python 3.

Python3_Development.Module_FOUND

Новое в версии 3.18.

Система имеет артефакты разработки Python 3 для модуля Python.

Python3_Development.SABIModule_FOUND

Новое в версии 3.26.

Система имеет артефакты разработки Python 3 для модуля Python, используя Stable Application Binary Interface.

Python3_Development.Embed_FOUND

Новое в версии 3.18.

Система имеет артефакты разработки Python 3 для встраивания Python.

Python3_INCLUDE_DIRS

Директории включаемых файлов Python 3.

Python3_LINK_OPTIONS

Новое в версии 3.19.

Параметры подключения Python 3. Некоторые конфигурации требуют определенных параметров подключения для корректной сборки и выполнения.

Python3_LIBRARIES

Библиотеки Python 3.

Python3_LIBRARY_DIRS

Директории библиотек Python 3.

Python3_RUNTIME_LIBRARY_DIRS

Директории библиотек среды выполнения Python 3.

Python3_SABI_LIBRARIES

Новое в версии 3.26.

Библиотеки Python 3 для Stable Application Binary Interface.

Python3_SABI_LIBRARY_DIRS

Новое в версии 3.26.

Директории библиотек Python 3 SABI.

Python3_RUNTIME_SABI_LIBRARY_DIRS

Новое в версии 3.26.

Директории библиотек среды выполнения Python 3 SABI.

Python3_VERSION

Версия Python 3.

Python3_VERSION_MAJOR

Основная версия Python 3.

Python3_VERSION_MINOR

Дополнительная версия Python 3.

Python3_VERSION_PATCH

Версия исправления Python 3.

Python3_PyPy_VERSION

Новое в версии 3.18.

Версия Python 3 PyPy.

Python3_NumPy_FOUND

Новое в версии 3.14.

Система имеет NumPy.

Python3_NumPy_INCLUDE_DIRS

Новое в версии 3.14.

Директории включаемых файлов NumPy.

Python3_NumPy_VERSION

Новое в версии 3.14.

Версия NumPy.

Подсказки

Python3_ROOT_DIR

Определяет корневой каталог установки Python 3.

Python3_USE_STATIC_LIBS
  • Если не определено, поиск общих библиотек и статических библиотек будет производиться в указанном порядке.
  • Если установлено в TRUE, поиск будет производиться только для статических библиотек.
  • Если установлено в FALSE, поиск будет производиться только для общих библиотек.

Примечание

Этот подсказка будет проигнорирована на Windows, так как статические библиотеки недоступны на этой платформе.

Python3_FIND_ABI

Новое в версии 3.16.

Эта переменная определяет, какие ABI, как определено в PEP 3149, должны быть просмотрены.

Примечание

Если Python3_FIND_ABI не определено, будет просмотрен любой ABI.

Переменная Python3_FIND_ABI представляет собой кортеж из 3 элементов, которые в указанном порядке определяют флаги pydebug (d), pymalloc (m) и unicode (u). Каждый элемент может принимать одно из следующих значений:

  • ON: Соответствующий флаг выбран.
  • OFF: Соответствующий флаг не выбран.
  • ANY: Будут проверены оба варианта (ON и OFF).

На основе этого кортежа будут просматриваться различные ABI, начиная с наиболее специализированных и заканчивая наиболее общими. Кроме того, debug версии будут просматриваться после non-debug версий.

Например, если у нас есть:

set (Python3_FIND_ABI "ON" "ANY" "ANY")

Следующие сочетания флагов будут добавлены к именам артефактов в указанном порядке: dmu, dm, du, и d.

И для поиска всех возможных ABI:

set (Python3_FIND_ABI "ANY" "ANY" "ANY")

Следующие сочетания в указанном порядке будут использованы: mu, m, u, <empty>, dmu, dm, du и d.

Примечание

Эта подсказка полезна только на системах POSIX. Таким образом, на системах Windows, когда Python3_FIND_ABI определено, Python дистрибутивы с сайта python.org будут найдены только если значение для каждого флага равно OFF или ANY.

Python3_FIND_STRATEGY

Новое в версии 3.15.

Эта переменная определяет, как будет выполняться поиск. Переменная Python3_FIND_STRATEGY может принимать одно из следующих значений:

  • VERSION: Попытаться найти самую последнюю версию во всех указанных местах. Это значение по умолчанию, если политика CMP0094 не определена или установлена в OLD.
  • LOCATION: Прекратить поиск как только будет найдена версия, удовлетворяющая ограничениям версии. Это значение по умолчанию, если политика CMP0094 установлена в NEW.

См. также Python3_FIND_UNVERSIONED_NAMES.

Python3_FIND_REGISTRY

Новое в версии 3.13.

В Windows переменная Python3_FIND_REGISTRY определяет порядок предпочтения между реестром и переменными среды. Переменная Python3_FIND_REGISTRY может принимать одно из следующих значений:

  • FIRST: Попытаться использовать реестр перед переменными среды. Это значение по умолчанию.
  • LAST: Попытаться использовать реестр после переменных среды.
  • NEVER: Никогда не пытаться использовать реестр.
Python3_FIND_FRAMEWORK

Новое в версии 3.15.

В macOS переменная Python3_FIND_FRAMEWORK определяет порядок предпочтения между компонентами пакетов в стиле Apple и в стиле Unix. Эта переменная может принимать те же значения, что и переменная CMAKE_FIND_FRAMEWORK.

Примечание

Значение ONLY не поддерживается, поэтому будет использоваться FIRST.

Если Python3_FIND_FRAMEWORK не определено, будет использоваться переменная CMAKE_FIND_FRAMEWORK, если она определена.

Python3_FIND_VIRTUALENV

Новое в версии 3.15.

Эта переменная определяет обработку виртуальных сред, управляемых virtualenv или conda. Она имеет смысл только когда активна виртуальная среда (т.е. скрипт activate был выполнен). В этом случае она имеет приоритет над переменными Python3_FIND_REGISTRY и CMAKE_FIND_FRAMEWORK.

Переменная Python3_FIND_VIRTUALENV может принимать одно из следующих значений:

  • FIRST: Виртуальная среда используется перед любыми другими стандартными путями для поиска интерпретатора. Это значение по умолчанию.
  • ONLY: Только виртуальная среда используется для поиска интерпретатора.
  • STANDARD: Виртуальная среда не используется для поиска интерпретатора, но переменная окружения PATH всегда учитывается. В этом случае переменная Python3_FIND_REGISTRY (Windows) или CMAKE_FIND_FRAMEWORK (macOS) могут быть установлены со значением LAST или NEVER для предпочтительного выбора интерпретатора из виртуальной среды.

Новое в версии 3.17: Добавлена поддержка сред conda.

Примечание

Если запрашивается компонент Development, настоятельно рекомендуется также включить компонент Interpreter, чтобы получить ожидаемый результат.

Python3_FIND_IMPLEMENTATIONS

Новое в версии 3.18.

Эта переменная определяет упорядоченный список различных реализаций, которые будут просматриваться. Переменная Python3_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 вторым, продукт Python, основанный на CPython, может быть выбран, потому что, например, с Python3_FIND_STRATEGY=LOCATION, каждое место будет сначала проверяться на предмет IronPython и во-вторых на CPython.

Примечание

Если IronPython указано, на платформах, отличных от Windows, ожидается, что интерпретатор .Net (т.е. команда mono) будет доступен через переменную PATH.

Python3_FIND_UNVERSIONED_NAMES

Новое в версии 3.20.

Эта переменная определяет, как будут просматриваться общие имена. В настоящее время это применяется только к общим именам интерпретатора, а именно, python3 и python.

Переменная Python3_FIND_UNVERSIONED_NAMES может принимать одно из следующих значений:

  • FIRST: Общие имена просматриваются перед более специализированными (например, python3.5).
  • LAST: Общие имена просматриваются после более специализированных. Это значение по умолчанию.
  • NEVER: Общие имена вообще не просматриваются.

См. также Python3_FIND_STRATEGY.

Спецификация артефактов

Новое в версии 3.16.

Для решения особых случаев можно напрямую указать артефакты, задав следующие переменные:

Python3_EXECUTABLE

Путь к интерпретатору.

Python3_COMPILER

Путь к компилятору.

Python3_DOTNET_LAUNCHER

Новое в версии 3.18.

Интерпретатор .Net. Используется только реализацией IronPython.

Python3_LIBRARY

Путь к библиотеке. Будет использован для вычисления переменных Python3_LIBRARIES, Python3_LIBRARY_DIRS и Python3_RUNTIME_LIBRARY_DIRS.

Python3_SABI_LIBRARY

Новое в версии 3.26.

Путь к библиотеке для стабильного интерфейса прикладных бинарных интерфейсов. Будет использован для вычисления переменных Python3_SABI_LIBRARIES, Python3_SABI_LIBRARY_DIRS и Python3_RUNTIME_SABI_LIBRARY_DIRS.

Python3_INCLUDE_DIR

Путь к каталогу заголовочных файлов Python. Будет использован для вычисления переменной Python3_INCLUDE_DIRS.

Python3_NumPy_INCLUDE_DIR

Путь к каталогу заголовочных файлов NumPy. Будет использован для вычисления переменной Python3_NumPy_INCLUDE_DIRS.

Примечание

Все пути должны быть абсолютными. Любые артефакты, указанные с относительным путем, будут проигнорированы.

Примечание

Когда артефакт указан, все HINTS будут проигнорированы, и поиск этого артефакта не будет выполнен.

Если указано более одного артефакта, пользователь несет ответственность за обеспечение согласованности различных артефактов.

По умолчанию, этот модуль поддерживает несколько вызовов в разных директориях проекта с различными требованиями к версии/компонентам, обеспечивая правильные и согласованные результаты для каждого вызова. Для поддержки этого поведения кэширование CMake не используется традиционным способом, что может быть проблематично для интерактивного задания. Поэтому, для включения интерактивного задания, поведение модуля можно контролировать с помощью следующей переменной:

Python3_ARTIFACTS_INTERACTIVE

Новая версия с 3.18.

Выбирает поведение модуля. Это булевая переменная:

  • Если установлено значение TRUE: Создаются записи в кэше CMake для вышеперечисленных переменных задания артефактов, позволяя пользователям изменять их интерактивно. Это отключает поддержку множественных требований к версии/компонентам.
  • Если установлено значение FALSE или не определено: Включается поддержка множественных требований к версии/компонентам.

Команды

Этот модуль определяет команду Python3_add_library (когда CMAKE_ROLE имеет значение PROJECT), которая имеет ту же семантику, что и add_library() и добавляет зависимость к целевому объекту Python3::Python или, когда тип библиотеки MODULE, к целевому объекту Python3::Module или Python3::SABIModule (если указан параметр USE_SABI) и учитывает правила именования модулей Python:

Python3_add_library (<name> [STATIC | SHARED | MODULE [USE_SABI <version>] [WITH_SOABI]]
                     <source1> [<source2> ...])

Если тип библиотеки не указан, предполагается MODULE.

Новая версия с 3.17: Для типа библиотеки MODULE, если указан параметр WITH_SOABI, суффикс модуля будет включать значение Python3_SOABI, если оно есть.

Новая версия с 3.26: Для типа MODULE, если указан параметр USE_SABI, будет задано определение препроцессора Py_LIMITED_API, как PRIVATE, для целевого объекта <name> со значением, вычисленным из аргумента <version>. Ожидаемый формат для <version> — major[.minor], где каждый компонент — числовое значение. Если указан компонент minor, версия должна быть, как минимум, 3.2, что является версией, в которой был представлен Стабильный интерфейс прикладных библиотек. Указание только основной версии 3 эквивалентно 3.2.

Если также указан параметр WITH_SOABI, суффикс модуля будет включать значение Python3_SOSABI, если оно есть.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/module/FindPython3.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API