CMake find_package (PythonInterp 3.7 REQUIRED) для платформы Win32 - PullRequest
0 голосов
/ 07 марта 2019

У меня есть проект, который должен поддерживать платформы Win32 и x64.Некоторый код генерируется скриптом Python.Этот скрипт использует python3 функций.

В CMakeLists.txt У меня есть что-то вроде этого:

find_package(PythonInterp REQUIRED)
if (CMAKE_CL_64)
    set(MY_APP_PLATFORM "x64")
else()
    set(MY_APP_PLATFORM "Win32")
endif()

add_custom_command(TARGET MyApp
    PRE_BUILD
    COMMAND ${PYTHON_EXECUTABLE} ${MyApp_ROOT}/generator.py -p ${MY_APP_PLATFORM }
    WORKING_DIRECTORY ${PATH_GENERATED_SRC}
    COMMENT "Generating code..."
    VERBATIM
)

Довольно просто.

Теперь, когда проект для x64используется все работает как шарм, но при сборке для Win32 (cmake должен сгенерировать отдельный проект) cmake находит python 2.7.2.

Изменение CMakeLists.txt таким образом:

find_package(PythonInterp 3.7 REQUIRED)

Приводит к ошибке cmake.

Есть ли способ исправить это, или мне нужно исправить скрипт питона, чтобы он был python2 совместимым?

Или мне нужно установить python3для 32 и 64 бит, чтобы покрыть обе платформы?

1 Ответ

2 голосов
/ 07 марта 2019

Модуль CMake FindPython3.cmake в вашем дистрибутиве cmake.

Это должно работать:

find_package(Python3 COMPONENTS Interpreter)

add_custom_command(TARGET MyApp
    PRE_BUILD
    COMMAND ${PYTHON3_EXECUTABLE} ${MyApp_ROOT}/generator.py -p ${MY_APP_PLATFORM}
    WORKING_DIRECTORY ${PATH_GENERATED_SRC}
    COMMENT "Generating code..."
    VERBATIM
)

Доступно с cmake 3.12.

Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...