Resolve QT_INSTALL_TRANSLATIONS via CMAKE_PREFIX_PATH if it is relative
The variables provided by Qt 6 might just contain a relative path. This change adds an extra function resolve these via CMAKE_PREFIX_PATH and CMAKE_FIND_ROOT_PATH.
This commit is contained in:
parent
d80302d20d
commit
9bc3555c99
|
@ -227,7 +227,7 @@ option(BUILTIN_TRANSLATIONS_OF_QT "enables/disables built-in translations of Qt
|
|||
# determine relevant Qt translation files
|
||||
set(QT_TRANSLATION_FILES)
|
||||
set(QT_TRANSLATION_SEARCH_PATHS)
|
||||
query_qmake_variable(QT_INSTALL_TRANSLATIONS)
|
||||
query_qmake_variable_path(QT_INSTALL_TRANSLATIONS)
|
||||
if (QT_INSTALL_TRANSLATIONS)
|
||||
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${QT_INSTALL_TRANSLATIONS}")
|
||||
endif ()
|
||||
|
|
|
@ -160,3 +160,38 @@ function (query_qmake_variable QMAKE_VARIABLE)
|
|||
PARENT_SCOPE)
|
||||
message(STATUS "Qt variable ${QMAKE_VARIABLE} queried from qmake: ${${QMAKE_VARIABLE}}")
|
||||
endfunction ()
|
||||
|
||||
# define function to make Qt variable available, resolving relative paths via CMAKE_FIND_ROOT_PATH
|
||||
function (query_qmake_variable_path QMAKE_VARIABLE)
|
||||
# query the variable itself
|
||||
query_qmake_variable("${QMAKE_VARIABLE}")
|
||||
set(VARIABLE_VALUE "${${QMAKE_VARIABLE}}")
|
||||
if (NOT VARIABLE_VALUE)
|
||||
message(WARNING "Unable to resolve Qt variable ${QMAKE_VARIABLE}: it is empty")
|
||||
return()
|
||||
endif ()
|
||||
|
||||
# pass the variable as-is if it points to an existing dir/file
|
||||
if (EXISTS "${VARIABLE_VALUE}")
|
||||
get_filename_component(VARIABLE_VALUE "${VARIABLE_VALUE}" REALPATH)
|
||||
message(STATUS "Qt variable ${QMAKE_VARIABLE} resolved to path: ${VARIABLE_VALUE}")
|
||||
set("${QMAKE_VARIABLE}" "${VARIABLE_VALUE}" PARENT_SCOPE)
|
||||
return()
|
||||
endif ()
|
||||
|
||||
# assume VARIABLE_VALUE is relative within CMAKE_FIND_ROOT_PATH, e.g. QT_INSTALL_TRANSLATIONS might be
|
||||
# set to "share/qt6/translations"
|
||||
foreach (ROOT_PATH ${CMAKE_FIND_ROOT_PATH} "")
|
||||
foreach (PREFIX_PATH ${CMAKE_PREFIX_PATH} "")
|
||||
string(JOIN "/" FULL_PATH ${ROOT_PATH} ${PREFIX_PATH} ${VARIABLE_VALUE})
|
||||
if (EXISTS "${FULL_PATH}")
|
||||
set("${QMAKE_VARIABLE}" "${FULL_PATH}" PARENT_SCOPE)
|
||||
message(STATUS "Qt variable ${QMAKE_VARIABLE} resolved to path: ${FULL_PATH}")
|
||||
return()
|
||||
else ()
|
||||
list(APPEND CHECKED_PATHS "${FULL_PATH}")
|
||||
endif ()
|
||||
endforeach()
|
||||
endforeach ()
|
||||
message(WARNING "Unable to resolve Qt variable ${QMAKE_VARIABLE} to an existing path, was checking for: ${CHECKED_PATHS}")
|
||||
endfunction ()
|
||||
|
|
Loading…
Reference in New Issue