Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2023-04-15 11:58:54 +08:00
parent 791479529d
commit 60329b55dc
1 changed files with 66 additions and 0 deletions

View File

@ -1180,3 +1180,69 @@ function(generate_win32_manifest_file)
") ")
file(WRITE "${MF_ARGS_PATH}" ${__contents}) file(WRITE "${MF_ARGS_PATH}" ${__contents})
endfunction() 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()