diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake --- a/kde-modules/KDEInstallDirs.cmake +++ b/kde-modules/KDEInstallDirs.cmake @@ -455,7 +455,7 @@ set(_default_KDE_INSTALL_USE_QT_SYS_PATHS OFF) if(NOT DEFINED KDE_INSTALL_USE_QT_SYS_PATHS) - query_qmake(qt_install_prefix_dir QT_INSTALL_PREFIX) + query_qmake(qt_install_prefix_dir QT_INSTALL_PREFIX TRY) if(qt_install_prefix_dir STREQUAL "${CMAKE_INSTALL_PREFIX}") message(STATUS "Installing in the same prefix as Qt, adopting their path scheme.") set(_default_KDE_INSTALL_USE_QT_SYS_PATHS ON) diff --git a/modules/ECMAddQch.cmake b/modules/ECMAddQch.cmake --- a/modules/ECMAddQch.cmake +++ b/modules/ECMAddQch.cmake @@ -289,7 +289,7 @@ # get Qt version, if any find_package(Qt5Core CONFIG QUIET) # lookup tag files - query_qmake(qt_docs_dir QT_INSTALL_DOCS) + query_qmake(qt_docs_dir QT_INSTALL_DOCS TRY) find_path(_qtcoreTagsPath qtcore/qtcore.tags PATHS ${qt_docs_dir} diff --git a/modules/ECMGeneratePriFile.cmake b/modules/ECMGeneratePriFile.cmake --- a/modules/ECMGeneratePriFile.cmake +++ b/modules/ECMGeneratePriFile.cmake @@ -102,7 +102,7 @@ set(_askqmake OFF) if(NOT DEFINED KDE_INSTALL_USE_QT_SYS_PATHS) include(ECMQueryQmake) - query_qmake(qt_install_prefix_dir QT_INSTALL_PREFIX) + query_qmake(qt_install_prefix_dir QT_INSTALL_PREFIX TRY) if(qt_install_prefix_dir STREQUAL "${CMAKE_INSTALL_PREFIX}") set(_askqmake ON) endif() diff --git a/modules/ECMQueryQmake.cmake b/modules/ECMQueryQmake.cmake --- a/modules/ECMQueryQmake.cmake +++ b/modules/ECMQueryQmake.cmake @@ -9,12 +9,26 @@ set(QMAKE_EXECUTABLE ${_qmake_executable_default} CACHE FILEPATH "Location of the Qt5 qmake executable") +# Helper method # This is not public API (yet)! +# Usage: query_qmake( [TRY]) +# Passing TRY will result in the method not failing fatal if no qmake executable +# has been found, but instead simply returning an empty string function(query_qmake result_variable qt_variable) + set(options TRY) + set(oneValueArgs ) + set(multiValueArgs ) + + cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT QMAKE_EXECUTABLE) - set(${result_variable} "" PARENT_SCOPE) - message(WARNING "Should specify a qmake Qt5 binary. Can't check ${qt_variable}") - return() + if(ARGS_TRY) + set(${result_variable} "" PARENT_SCOPE) + message(STATUS "No qmake Qt5 binary found. Can't check ${qt_variable}") + return() + else() + message(FATAL_ERROR "No qmake Qt5 binary found. Can't check ${qt_variable} as required") + endif() endif() execute_process( COMMAND ${QMAKE_EXECUTABLE} -query "${qt_variable}"