FindPython3
Поиск интерпретатора Python 3, компилятора и среды разработки (включая каталоги заголовков и библиотеки).
Поддерживаются следующие компоненты:
-
Interpreter: поиск интерпретатора Python 3 -
Compiler: поиск компилятора Python 3. Предлагается только IronPython. -
Development: поиск артефактов разработки (каталоги заголовков и библиотеки) -
NumPy: поиск каталогов заголовков NumPy.
Если не указаны COMPONENTS, предполагается Interpreter.
Для обеспечения согласованных версий между компонентами Interpreter, Compiler, Development и NumPy, укажите все компоненты одновременно:
find_package (Python3 COMPONENTS Interpreter Development)
Этот модуль ищет только версию 3 Python. Этот модуль может использоваться совместно с модулем FindPython2 для использования обеих версий Python.
Модуль FindPython может быть использован, если версия Python не имеет значения.
Примечание
Если компоненты Interpreter и Development оба указаны, этот модуль ищет только интерпретатор с архитектурой платформы, совпадающей с архитектурой, определённой конфигурацией CMake. Это ограничение не применяется, если указан только компонент Interpreter.
Импортированные цели
Этот модуль определяет следующие импортированные цели (когда CMAKE_ROLE равен PROJECT):
-
Python3::Interpreter -
Интерпретатор Python 3. Цель определена, если компонент
Interpreterнайден. -
Python3::Compiler -
Компилятор Python 3. Цель определена, если компонент
Compilerнайден. -
Python3::Python -
Библиотека Python 3 для встраивания Python. Цель определена, если компонент
Developmentнайден. -
Python3::Module -
Библиотека Python 3 для модуля Python. Цель определена, если компонент
Developmentнайден. -
Python3::NumPy -
Библиотека 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
-
Python3_STDLIB -
Стандартный независимый от платформы каталог установки.
Информация возвращается
distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True). -
Python3_STDARCH -
Стандартный зависимый от платформы каталог установки.
Информация возвращается
distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True). -
Python3_SITELIB -
Независимый от платформы каталог сторонней установки.
Информация возвращается
distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False). -
Python3_SITEARCH -
Зависимый от платформы каталог сторонней установки.
Информация возвращается
distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False). -
Python3_Compiler_FOUND -
Система имеет компилятор Python 3.
-
Python3_COMPILER -
Путь к компилятору Python 3. Предлагается только IronPython.
-
Python3_COMPILER_ID -
- Короткая строка, уникальная для компилятора. Возможные значения:
-
- IronPython
-
Python3_Development_FOUND -
Система имеет артефакты разработки Python 3.
-
Python3_INCLUDE_DIRS -
Каталоги заголовков Python 3.
-
Python3_LIBRARIES -
Библиотеки Python 3.
-
Python3_LIBRARY_DIRS -
Каталоги библиотек Python 3.
-
Python3_RUNTIME_LIBRARY_DIRS -
Каталоги библиотек Python 3 runtime.
-
Python3_VERSION -
Версия Python 3.
-
Python3_VERSION_MAJOR -
Основная версия Python 3.
-
Python3_VERSION_MINOR -
Дополнительная версия Python 3.
-
Python3_VERSION_PATCH -
Версия Python 3 (патч).
-
Python3_NumPy_FOUND -
Система имеет NumPy.
-
Python3_NumPy_INCLUDE_DIRS -
Каталоги заголовков NumPy.
-
Python3_NumPy_VERSION -
Версия NumPy.
Подсказки
-
Python3_ROOT_DIR -
Определите корневой каталог установки Python 3.
-
Python3_USE_STATIC_LIBS -
- Если не определено, поиск общих и статических библиотек выполняется в этом порядке.
- Если установлено в TRUE, поиск выполняется только для статических библиотек.
- Если установлено в FALSE, поиск выполняется только для общих библиотек.
-
Python3_FIND_ABI -
Эта переменная определяет, какие ABIs, как определено в 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.И для поиска любых возможных ABIs:
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 -
Эта переменная определяет, как будет выполняться поиск. Переменная
Python3_FIND_STRATEGYможет быть пустой или одной из следующих:-
VERSION: Попытаться найти последнюю версию во всех указанных расположениях. Это значение по умолчанию, если политикаCMP0094не определена или установлена вOLD. -
LOCATION: Остановиться как только будет найдена версия, удовлетворяющая ограничениям версии. Это значение по умолчанию, если политикаCMP0094установлена вNEW.
-
-
Python3_FIND_REGISTRY -
В Windows переменная
Python3_FIND_REGISTRYопределяет порядок приоритетов между реестром и переменными среды. ПеременнаяPython3_FIND_REGISTRYможет быть пустой или одной из следующих:-
FIRST: Попытаться использовать реестр перед переменными среды. Это значение по умолчанию. -
LAST: Попытаться использовать реестр после переменных среды. -
NEVER: Никогда не пытаться использовать реестр.
-
-
Python3_FIND_FRAMEWORK -
В macOS переменная
Python3_FIND_FRAMEWORKопределяет порядок приоритетов между компонентами пакетов Apple-стиля и unix-стиля. Эта переменная может быть пустой или иметь те же значения, что и переменнаяCMAKE_FIND_FRAMEWORK.Примечание
Значение
ONLYне поддерживается, поэтому используетсяFIRST.Если
Python3_FIND_FRAMEWORKне определено, используется переменнаяCMAKE_FIND_FRAMEWORK, если она определена. -
Python3_FIND_VIRTUALENV -
Эта переменная определяет обработку виртуальных сред. Она имеет смысл только при активной виртуальной среде (т.е. когда скрипт
activateбыл выполнен). В этом случае она имеет приоритет над переменнымиPython3_FIND_REGISTRYиCMAKE_FIND_FRAMEWORK. ПеременнаяPython3_FIND_VIRTUALENVможет быть пустой или одной из следующих:-
FIRST: Виртуальная среда используется перед любыми стандартными путями для поиска интерпретатора. Это значение по умолчанию. -
ONLY: Используется только виртуальная среда для поиска интерпретатора. -
STANDARD: Виртуальная среда не используется для поиска интерпретатора. В этом случае переменнаяPython3_FIND_REGISTRY(Windows) илиCMAKE_FIND_FRAMEWORK(macOS) может быть установлена со значениемLASTилиNEVERдля выбора предпочтительно интерпретатора из виртуальной среды.
Примечание
Если запрашивается компонент
Development, настоятельно рекомендуется также включить компонентInterpreter, чтобы получить ожидаемый результат. -
Спецификация артефактов
Для решения особых случаев можно напрямую указать артефакты, установив следующие переменные:
-
Python3_EXECUTABLE -
Путь к интерпретатору.
-
Python3_COMPILER -
Путь к компилятору.
-
Python3_LIBRARY -
Путь к библиотеке. Она будет использоваться для вычисления переменных
Python3_LIBRARIES,Python3_LIBRAY_DIRSиPython3_RUNTIME_LIBRARY_DIRS. -
Python3_INCLUDE_DIR -
Путь к каталогу заголовков
Python. Он будет использован для вычисления переменнойPython3_INCLUDE_DIRS. -
Python3_NumPy_INCLUDE_DIR -
Путь к каталогу заголовков
NumPy. Он будет использован для вычисления переменнойPython3_NumPy_INCLUDE_DIRS.
Примечание
Все пути должны быть абсолютными. Любой артефакт, указанный с относительным путем, будет проигнорирован.
Примечание
Когда артефакт указан, все HINTS будут проигнорированы, и поиск этого артефакта не будет произведён.
Если указано более одного артефакта, пользователь несёт ответственность за обеспечение согласованности различных артефактов.
Команды
Этот модуль определяет команду Python_add_library (когда CMAKE_ROLE имеет значение PROJECT), которая имеет ту же семантику, что и add_library() и добавляет зависимость к целевому объекту Python3::Python или, когда тип библиотеки MODULE, к целевому объекту Python3::Module, и учитывает правила именования Python-модулей:
Python3_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/FindPython3.html