Spec-Zone.ru › CMake 3.16

FindPython

Поиск интерпретатора Python, компилятора и среды разработки (включая каталоги заголовков и библиотеки).

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

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

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

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

find_package (Python COMPONENTS Interpreter Development)

Этот модуль предпочтительно ищет версию 3 Python. Если не найдено, ищется версия 2. Чтобы управлять одновременными версиями 3 и 2 Python, используйте модули FindPython3 и FindPython2 вместо этого модуля.

Примечание

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

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

Этот модуль определяет следующие Импортированные цели (когда CMAKE_ROLE равно PROJECT):

Python::Interpreter

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

Python::Compiler

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

Python::Python

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

Python::Module

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

Python::NumPy

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

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

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

Python_FOUND

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

Python_Interpreter_FOUND

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

Python_EXECUTABLE

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

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

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

Информация возвращается distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True).

Python_STDARCH

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

Информация возвращается distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True).

Python_SITELIB

Внеплатформенный каталог установки сторонних библиотек.

Информация возвращается distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False).

Python_SITEARCH

Зависимый от платформы каталог установки сторонних библиотек.

Информация возвращается distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False).

Python_Compiler_FOUND

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

Python_COMPILER

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

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

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

Python_INCLUDE_DIRS

Каталоги заголовков Python.

Python_LIBRARIES

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

Python_LIBRARY_DIRS

Каталоги библиотек Python.

Python_RUNTIME_LIBRARY_DIRS

Каталоги библиотек выполнения Python.

Python_VERSION

Версия Python.

Python_VERSION_MAJOR

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

Python_VERSION_MINOR

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

Python_VERSION_PATCH

Исправительная версия Python.

Python_NumPy_FOUND

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

Python_NumPy_INCLUDE_DIRS

Каталоги заголовков NumPy.

Python_NumPy_VERSION

Версия NumPy.

Подсказки

Python_ROOT_DIR

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

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

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

Примечание

Эта подсказка будет учтена только при поиске версии Python 3.

Примечание

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

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

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

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

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

set (Python_FIND_ABI "ON" "ANY" "ANY")

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

И чтобы найти любые возможные ABI:

set (Python_FIND_ABI "ANY" "ANY" "ANY")

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

Примечание

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

Python_FIND_STRATEGY

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

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

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

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

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

Примечание

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

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

Python_FIND_VIRTUALENV

Эта переменная определяет обработку виртуальных сред. Она имеет смысл только при активной виртуальной среде (т.е. скрипт activate был выполнен). В этом случае она имеет приоритет над переменными Python_FIND_REGISTRY и CMAKE_FIND_FRAMEWORK . Переменная Python_FIND_VIRTUALENV может быть пустой или иметь одно из следующих значений:

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

Примечание

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

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

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

Python_EXECUTABLE

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

Python_COMPILER

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

Python_LIBRARY

Путь к библиотеке. Она будет использоваться для вычисления переменных Python_LIBRARIES, Python_LIBRAY_DIRS и Python_RUNTIME_LIBRARY_DIRS.

Python_INCLUDE_DIR

Путь к каталогу заголовков Python. Он будет использован для вычисления переменной Python_INCLUDE_DIRS.

Python_NumPy_INCLUDE_DIR

Путь к каталогу заголовков NumPy. Он будет использован для вычисления переменной Python_NumPy_INCLUDE_DIRS.

Примечание

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

Примечание

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

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

Команды

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

Python_add_library (my_module MODULE src1.cpp)

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

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

Spec-Zone.ru

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