cmake: use Qt's official function to get the quick plugin info

This commit is contained in:
Yuhang Zhao 2023-05-16 18:01:06 +08:00
parent a3cfa59d1d
commit cf568b6e7a
2 changed files with 50 additions and 35 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<LibraryPath>$(MSBuildThisFileDirectory)lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(MSBuildThisFileDirectory)lib;$(LibraryPath)</LibraryPath>

View File

@ -115,8 +115,6 @@ set_target_properties(${SUB_PROJ_NAME} PROPERTIES
SOVERSION "${PROJECT_VERSION_MAJOR}" SOVERSION "${PROJECT_VERSION_MAJOR}"
) )
set(SUB_MOD_TARGETS ${SUB_PROJ_NAME})
if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}") set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}")
else() else()
@ -157,14 +155,12 @@ set(__import_base_dir "${PROJECT_BINARY_DIR}/imports")
if(DEFINED FRAMELESSHELPER_IMPORT_DIR) if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
set(__import_base_dir "${FRAMELESSHELPER_IMPORT_DIR}") set(__import_base_dir "${FRAMELESSHELPER_IMPORT_DIR}")
endif() endif()
set(__import_uri "org/wangwenx190/${PROJECT_NAME}")
set(__import_dir "${__import_base_dir}/${__import_uri}")
if(QT_VERSION VERSION_GREATER_EQUAL "6.2") if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
qt_add_qml_module(${SUB_PROJ_NAME} qt_add_qml_module(${SUB_PROJ_NAME}
URI "org.wangwenx190.${PROJECT_NAME}" URI "org.wangwenx190.${PROJECT_NAME}"
VERSION "1.0" VERSION "1.0"
OUTPUT_DIRECTORY "${__import_dir}" OUTPUT_DIRECTORY "${__import_base_dir}/org/wangwenx190/${PROJECT_NAME}"
RESOURCE_PREFIX "/" RESOURCE_PREFIX "/"
#NO_RESOURCE_TARGET_PATH # Can't be used for non-executables. #NO_RESOURCE_TARGET_PATH # Can't be used for non-executables.
OUTPUT_TARGETS __qml_targets OUTPUT_TARGETS __qml_targets
@ -175,7 +171,6 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
) )
if(__qml_targets) if(__qml_targets)
foreach(__target ${__qml_targets}) foreach(__target ${__qml_targets})
list(APPEND SUB_MOD_TARGETS ${__target})
if(FRAMELESSHELPER_BUILD_STATIC) if(FRAMELESSHELPER_BUILD_STATIC)
target_sources(${SUB_PROJ_NAME} PRIVATE target_sources(${SUB_PROJ_NAME} PRIVATE
$<TARGET_OBJECTS:${__target}> $<TARGET_OBJECTS:${__target}>
@ -184,34 +179,54 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
endforeach() endforeach()
endif() endif()
if(NOT FRAMELESSHELPER_NO_INSTALL) if(NOT FRAMELESSHELPER_NO_INSTALL)
set(__lib_prefix) qt_query_qml_module(${SUB_PROJ_NAME}
if(UNIX) URI module_uri
set(__lib_prefix lib) VERSION module_version
endif() PLUGIN_TARGET module_plugin_target
set(__lib_suffix "$<$<CONFIG:Debug>:${CMAKE_DEBUG_POSTFIX}>") TARGET_PATH module_target_path
set(__lib_ext) QMLDIR module_qmldir
if(FRAMELESSHELPER_BUILD_STATIC) TYPEINFO module_typeinfo
if(MSVC) #QML_FILES module_qml_files
set(__lib_ext lib) #QML_FILES_DEPLOY_PATHS module_qml_files_deploy_paths
else() #RESOURCES module_resources
set(__lib_ext a) #RESOURCES_DEPLOY_PATHS module_resources_deploy_paths
endif()
else()
if(WIN32)
set(__lib_ext dll)
elseif(APPLE)
set(__lib_ext dylib)
elseif(UNIX)
set(__lib_ext so)
endif()
endif()
install(
FILES
"${__import_dir}/qmldir"
"${__import_dir}/${SUB_PROJ_NAME}.qmltypes"
"${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}"
DESTINATION "qml/${__import_uri}"
) )
if(module_target_path)
set(__qml_plugin_dir "qml/${module_target_path}")
if(module_plugin_target)
install(TARGETS ${module_plugin_target}
RUNTIME DESTINATION "${__qml_plugin_dir}"
LIBRARY DESTINATION "${__qml_plugin_dir}"
ARCHIVE DESTINATION "${__qml_plugin_dir}"
)
endif()
if(module_qmldir)
install(FILES "${module_qmldir}" DESTINATION "${__qml_plugin_dir}")
endif()
if(module_typeinfo)
install(FILES "${module_typeinfo}" DESTINATION "${__qml_plugin_dir}")
endif()
if(module_qml_files)
list(LENGTH module_qml_files num_files)
math(EXPR last_index "${num_files} - 1")
foreach(i RANGE 0 ${last_index})
list(GET module_qml_files ${i} src_file)
list(GET module_qml_files_deploy_paths ${i} deploy_path)
get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
install(FILES "${src_file}" DESTINATION "${__qml_plugin_dir}/${dest_dir}")
endforeach()
endif()
if(module_resources)
list(LENGTH module_resources num_files)
math(EXPR last_index "${num_files} - 1")
foreach(i RANGE 0 ${last_index})
list(GET module_resources ${i} src_file)
list(GET module_resources_deploy_paths ${i} deploy_path)
get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
install(FILES "${src_file}" DESTINATION "${__qml_plugin_dir}/${dest_dir}")
endforeach()
endif()
endif()
endif() endif()
endif() endif()
@ -322,7 +337,7 @@ if(NOT FRAMELESSHELPER_NO_INSTALL)
DESTINATION "${__inc_dir}/private" DESTINATION "${__inc_dir}/private"
) )
install( install(
TARGETS ${SUB_MOD_TARGETS} TARGETS ${SUB_PROJ_NAME}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"