diff --git a/CMakeLists.txt b/CMakeLists.txt index b8ba5f1d1c..df804ed1bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -951,8 +951,8 @@ endif() SET(PYTHON_CONFIG_SUFFIX -python2.7 CACHE STRING "Shiboken cmake file suffix. If left empty, system default will be used: ") SET(PYTHON_BASENAME -python2.7 CACHE STRING "Same as PYTHON_SUFFIX but for PySide. If left empty, PYTHON_SUFFIX will be used: ") else() - SET(PYTHON_CONFIG_SUFFIX "" CACHE STRING "Shiboken cmake file suffix. If left empty, system default will be used: ") - SET(PYTHON_BASENAME "" CACHE STRING "Same as PYTHON_SUFFIX but for PySide. If left empty, PYTHON_SUFFIX will be used: ") + #SET(PYTHON_CONFIG_SUFFIX "" CACHE STRING "Shiboken cmake file suffix. If left empty, system default will be used: ") + #SET(PYTHON_BASENAME "" CACHE STRING "Same as PYTHON_SUFFIX but for PySide. If left empty, PYTHON_SUFFIX will be used: ") endif() if(DEFINED MACPORTS_PREFIX) @@ -961,6 +961,25 @@ endif() endif(DEFINED MACPORTS_PREFIX) find_package(Shiboken2 QUIET)# REQUIRED + if (Shiboken2_FOUND) + # Shiboken2 config file was found but it may use the wrong Python version + # Try to get the matching config suffix and repeat finding the package + if (PYTHON_VERSION_MAJOR LESS 3) + set(SHIBOKEN_PATTERN -python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) + else() + set(SHIBOKEN_PATTERN .cpython-${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}) + endif() + + file(GLOB SHIBOKEN_CONFIG "${Shiboken2_DIR}/Shiboken2Config${SHIBOKEN_PATTERN}*.cmake") + if (SHIBOKEN_CONFIG) + get_filename_component(SHIBOKEN_CONFIG_SUFFIX ${SHIBOKEN_CONFIG} NAME) + string(SUBSTRING ${SHIBOKEN_CONFIG_SUFFIX} 15 -1 SHIBOKEN_CONFIG_SUFFIX) + string(REPLACE ".cmake" "" PYTHON_CONFIG_SUFFIX ${SHIBOKEN_CONFIG_SUFFIX}) + MESSAGE(STATUS "PYTHON_CONFIG_SUFFIX: ${PYTHON_CONFIG_SUFFIX}") + find_package(Shiboken2 QUIET) + endif() + endif() + if(NOT SHIBOKEN_INCLUDE_DIR) MESSAGE("====================\n" "shiboken2 not found.\n"