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