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
|
# determine relevant Qt translation files
|
||||||
set(QT_TRANSLATION_FILES)
|
set(QT_TRANSLATION_FILES)
|
||||||
set(QT_TRANSLATION_SEARCH_PATHS)
|
set(QT_TRANSLATION_SEARCH_PATHS)
|
||||||
query_qmake_variable(QT_INSTALL_TRANSLATIONS)
|
query_qmake_variable_path(QT_INSTALL_TRANSLATIONS)
|
||||||
if (QT_INSTALL_TRANSLATIONS)
|
if (QT_INSTALL_TRANSLATIONS)
|
||||||
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${QT_INSTALL_TRANSLATIONS}")
|
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${QT_INSTALL_TRANSLATIONS}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -160,3 +160,38 @@ function (query_qmake_variable QMAKE_VARIABLE)
|
||||||
PARENT_SCOPE)
|
PARENT_SCOPE)
|
||||||
message(STATUS "Qt variable ${QMAKE_VARIABLE} queried from qmake: ${${QMAKE_VARIABLE}}")
|
message(STATUS "Qt variable ${QMAKE_VARIABLE} queried from qmake: ${${QMAKE_VARIABLE}}")
|
||||||
endfunction ()
|
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