From 60329b55dcfaf41da63f134a90ddce82dc9b6c4a Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Sat, 15 Apr 2023 11:58:54 +0800 Subject: [PATCH] update Signed-off-by: Yuhang Zhao <2546789017@qq.com> --- utils.cmake | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/utils.cmake b/utils.cmake index 84359d4..70c155b 100644 --- a/utils.cmake +++ b/utils.cmake @@ -1180,3 +1180,69 @@ function(generate_win32_manifest_file) ") file(WRITE "${MF_ARGS_PATH}" ${__contents}) endfunction() + +function(query_qt_paths) + cmake_parse_arguments(QT_ARGS "" "SDK_DIR;BIN_DIR;DOC_DIR;INCLUDE_DIR;LIB_DIR;PLUGINS_DIR;QML_DIR;TRANSLATIONS_DIR" "" ${ARGN}) + find_package(QT NAMES Qt6 Qt5 QUIET COMPONENTS Core) + find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS Core) + if(NOT (Qt6_FOUND OR Qt5_FOUND)) + message(AUTHOR_WARNING "You need to install the QtCore module first to be able to query Qt installation paths.") + return() + endif() + # /whatever/Qt/6.5.0/gcc_64/lib/cmake/Qt6 + set(__qt_inst_dir "${Qt${QT_VERSION_MAJOR}_DIR}") + cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir) + cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir) + cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir) + if(QT_ARGS_SDK_DIR) + set(${QT_ARGS_SDK_DIR} "${__qt_inst_dir}" PARENT_SCOPE) + endif() + if(QT_ARGS_BIN_DIR) + set(${QT_ARGS_BIN_DIR} "${__qt_inst_dir}/bin" PARENT_SCOPE) + endif() + if(QT_ARGS_DOC_DIR) + set(${QT_ARGS_DOC_DIR} "${__qt_inst_dir}/doc" PARENT_SCOPE) + endif() + if(QT_ARGS_INCLUDE_DIR) + set(${QT_ARGS_INCLUDE_DIR} "${__qt_inst_dir}/include" PARENT_SCOPE) + endif() + if(QT_ARGS_LIB_DIR) + set(${QT_ARGS_LIB_DIR} "${__qt_inst_dir}/lib" PARENT_SCOPE) + endif() + if(QT_ARGS_PLUGINS_DIR) + set(${QT_ARGS_PLUGINS_DIR} "${__qt_inst_dir}/plugins" PARENT_SCOPE) + endif() + if(QT_ARGS_QML_DIR) + set(${QT_ARGS_QML_DIR} "${__qt_inst_dir}/qml" PARENT_SCOPE) + endif() + if(QT_ARGS_TRANSLATIONS_DIR) + set(${QT_ARGS_TRANSLATIONS_DIR} "${__qt_inst_dir}/translations" PARENT_SCOPE) + endif() +endfunction() + +function(query_qt_library_info) + cmake_parse_arguments(QT_ARGS "" "STATIC;SHARED" "" ${ARGN}) + find_package(QT NAMES Qt6 Qt5 QUIET COMPONENTS Core) + find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS Core) + if(NOT (Qt6_FOUND OR Qt5_FOUND)) + message(AUTHOR_WARNING "You need to install the QtCore module first to be able to query Qt library information.") + return() + endif() + if(QT_ARGS_STATIC OR QT_ARGS_SHARED) + get_target_property(__lib_type Qt${QT_VERSION_MAJOR}::Core TYPE) + if(QT_ARGS_STATIC) + if(__lib_type STREQUAL "STATIC_LIBRARY") + set(${QT_ARGS_STATIC} ON PARENT_SCOPE) + elseif(__lib_type STREQUAL "SHARED_LIBRARY") + set(${QT_ARGS_STATIC} OFF PARENT_SCOPE) + endif() + endif() + if(QT_ARGS_SHARED) + if(__lib_type STREQUAL "STATIC_LIBRARY") + set(${QT_ARGS_SHARED} OFF PARENT_SCOPE) + elseif(__lib_type STREQUAL "SHARED_LIBRARY") + set(${QT_ARGS_SHARED} ON PARENT_SCOPE) + endif() + endif() + endif() +endfunction()