Spec-Zone.ru › CMake 3.17

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_SOABI

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

Информация возвращается distutils.sysconfig.get_config_flag('SOABI') или вычисляется из distutils.sysconfig.get_config_flag('EXT_SUFFIX') или python-config --extension-suffix.

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

Эта переменная определяет обработку виртуальных сред, управляемых virtualenv или conda . Она имеет смысл только при активной виртуальной среде (то есть когда был выполен скрипт 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 (<name> [STATIC | SHARED | MODULE [WITH_SOABI]]
                    <source1> [<source2> ...])

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

Для типа библиотеки MODULE , если указана опция WITH_SOABI, суффикс модуля будет включать значение Python_SOABI, если оно есть.

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

Spec-Zone.ru

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