이 페이지에서

qt_query_qml_module

QML 모듈에 대한 정보를 가져옵니다.

이 명령은 Qt6 패키지의 Qml 구성 요소에 정의되어 있으며, 다음과 같이 불러올 수 있습니다:

find_package(Qt6 REQUIRED COMPONENTS Qml)

이 명령은 Qt 6.3에서 도입되었습니다.

개요

qt_query_qml_module(
    target
    [URI uri_var]
    [VERSION version_var]
    [PLUGIN_TARGET plugin_target_var]
    [TARGET_PATH target_path_var]
    [MODULE_RESOURCE_PATH module_resource_path_var]
    [QMLDIR qmldir_var]
    [TYPEINFO typeinfo_var]
    [QML_FILES qml_files_var]
    [QML_FILES_DEPLOY_PATHS qml_files_deploy_paths_var]
    [QML_FILES_PREFIX_OVERRIDES qml_files_prefix_overrides_var]
    [RESOURCES resources_var]
    [RESOURCES_DEPLOY_PATHS resources_deploy_paths_var]
    [RESOURCES_PREFIX_OVERRIDES resources_prefix_overrides_var]
)

버전 정보가 없는 명령어가 비활성화된 경우, 대신 ` qt6_query_qml_module() `을 사용하십시오. 이 명령어는 본 명령어와 동일한 인자 집합을 지원합니다.

설명

이 명령어는 QML 모듈 target 에 대한 정보를 얻기 위해 사용됩니다. 해당 target 는 이전에 qt_add_qml_module() 호출을 통해 생성되었거나 전달되었어야 합니다. target 는 가져온 타겟일 수 없습니다.

이 명령이 제공하는 정보를 통해 호출자는 단일 QML 모듈의 모든 부분을 배포할 수 있습니다. 프로젝트는 표준 install(TARGETS) 명령을 사용하여 target 및 관련 플러그인 타깃(모듈에 플러그인 타깃이 있고, 이 타깃이 백업 target 과 별개인 경우)을 설치해야 합니다. 그 외의 모든 항목은 install(FILES)을 사용하여 배포할 수 있습니다.

인수

각 선택적 인수는 해당 QML 모듈 속성을 저장할 변수의 이름을 지정합니다.

URI 및 VERSION 는 각각 모듈의 URI와 버전을 제공합니다.

PLUGIN_TARGET 을 사용하면 QML 모듈의 플러그인 타깃 이름을 얻을 수 있습니다. 모든 QML 모듈에 플러그인이 있는 것은 아니므로, 이 옵션에 대해 반환되는 값은 빈 문자열일 수 있습니다. QML 모듈에 별도의 백킹 타깃이 없는 경우, target 는 플러그인 타깃과 동일합니다.

TARGET_PATH 는 URI 에서 점(.)을 슬래시(/)로 대체한 것입니다. 이는 기본 QML 모듈 설치 디렉터리 아래에서 이 QML 모듈의 qmldir 파일(및 기타 파일)이 배포되어야 할 경로를 나타냅니다. QML 모듈 설치 디렉터리는 QML 엔진이 QML 모듈을 검색하는 QML 임포트 경로 역할을 합니다. qt_generate_deploy_qml_app_script() 에서 사용하는 기본 QML 모듈 설치 디렉터리는 qml 입니다. 배포 스크립트를 사용하는 프로젝트는 이 위치를 하드코딩하는 대신 QT_DEPLOY_QML_DIR을 사용할 수 있습니다( QT_DEPLOY_PREFIX도 참조하십시오).

MODULE_RESOURCE_PATH QML 모듈의 컴파일된 파일이 위치한 리소스 경로를 제공합니다. 이 경로는 qt_add_qml_module()의 RESOURCE_PREFIX 에 모듈의 TARGET_PATH 를 연결하여 구성됩니다. 조회된 값은 배포에 사용되어서는 안 되지만, 필요한 경우 리소스 경로와 파일 시스템 위치를 매칭하는 데 도움이 될 수 있습니다.

QMLDIR qmldir 파일의 경로를 제공합니다. QML 모듈을 배포할 때 이 파일을 대상 경로로 복사해야 합니다. 배포 스크립트에서는 를 사용하여 이 위치를 확인할 수 있습니다. ${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}

TYPEINFO 이 속성은 모듈에 typeinfo 파일이 있는 경우 해당 파일의 경로를 제공합니다. 모듈에 typeinfo 파일이 없으면 빈 문자열이 반환됩니다. typeinfo 파일은 qmldir 파일과 동일한 경로에 배포되어야 합니다.

QML_FILES 다음 방법 중 하나를 통해 QML 모듈에 추가된 모든 파일의 목록을 제공합니다:

모든 파일은 절대 경로로 기록됩니다.

QML_FILES_DEPLOY_PATHS QML_FILES 과 정확히 동일한 수의 요소를 가진 목록을 제공합니다. 목록의 각 요소는 의 해당 요소가 배포되어야 하는 대상 경로 아래의 경로입니다. 의 경로에는 파일 이름이 포함됩니다. 리소스 별칭( QML_FILES_DEPLOY_PATHS QML_FILES QML_FILES_DEPLOY_PATHS QT_RESOURCE_ALIAS 참조)을 사용하기 때문에 이 경로의 파일 이름이 의 파일 이름과 다를 수 있기 때문입니다. QML_FILES

QML_FILES_DEPLOY_PATHS 의 항목은 빈 문자열일 수도 있습니다. 사용자 정의 PREFIX 를 사용하여 qt_target_qml_sources() 로 추가된 파일은 배포 경로가 없습니다. 사용자 정의 접두사를 사용하는 경우 일반적으로 해당 파일이 QML 모듈의 대상 경로 외부에 위치하기 때문입니다.

QML_FILES_PREFIX_OVERRIDES 는 QML_FILES 와 정확히 동일한 수의 요소를 가진 또 다른 목록을 제공합니다. 앞 단락에서 설명한 대로 사용자 정의 접두사를 사용하여 파일이 추가된 경우, QML_FILES_PREFIX_OVERRIDES 목록의 해당 항목에는 사용된 사용자 정의 접두사가 포함됩니다. 그 외 모든 파일의 경우, 목록 항목은 빈 문자열이 됩니다.

참고: 특수한경우로 , QML_FILES 목록에 파일이 단 하나만 있는 경우, 해당 파일에 사용자 정의 접두사가 있는지 여부에 따라 QML_FILES_DEPLOY_PATHS 또는 QML_FILES_PREFIX_OVERRIDES 이 빈 문자열이 될 수 있습니다. 이는 CMake가 목록과 문자열을 표현하는 방식상, 빈 문자열과 요소가 하나뿐인 빈 목록을 구분할 수 없기 때문입니다.

RESOURCES, RESOURCES_DEPLOY_PATHS 및 RESOURCES_PREFIX_OVERRIDES 옵션은 앞서 설명한 QML_FILES 옵션과 유사합니다. RESOURCES 는 qt_add_qml_module() 또는 qt_target_qml_sources()에 RESOURCES 인수로 QML 모듈에 추가된 모든 파일의 목록을 제공합니다. 모든 경로는 절대 경로입니다. RESOURCES_DEPLOY_PATHS 및 RESOURCES_PREFIX_OVERRIDES 의 의미와 사용법은 각각 QML_FILES_DEPLOY_PATHS 및 QML_FILES_PREFIX_OVERRIDES 와 동일한 패턴을 따릅니다.

예시

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 6.3 REQUIRED COMPONENTS Core Qml)

set(module_name "MyThings")
qt_add_qml_module(${module_name}
    URI My.Things
    VERSION 1.3
    RESOURCE_PREFIX org.mycompany/imports
    QML_FILES
        First.qml
        Second.qml
    RESOURCES
        Third.txt
)

qt_query_qml_module(${module_name}
    URI module_uri
    VERSION module_version
    PLUGIN_TARGET module_plugin_target
    TARGET_PATH module_target_path
    QMLDIR module_qmldir
    TYPEINFO module_typeinfo
    QML_FILES module_qml_files
    QML_FILES_DEPLOY_PATHS qml_files_deploy_paths
    RESOURCES module_resources
    RESOURCES_DEPLOY_PATHS resources_deploy_paths
)

message("My QML module URI is: ${module_uri}")
message("My QML module version is: ${module_version}")

# Install the QML module backing library
set(staging_prefix "staging")
install(TARGETS ${module_name}
    ARCHIVE DESTINATION "${staging_prefix}/${CMAKE_INSTALL_LIBDIR}"
    LIBRARY DESTINATION "${staging_prefix}/${CMAKE_INSTALL_LIBDIR}"
    RUNTIME DESTINATION "${staging_prefix}/${CMAKE_INSTALL_BINDIR}"
)
set(module_dir "${staging_prefix}/qml/${module_target_path}")

# Install the QML module runtime loadable plugin
install(TARGETS "${module_plugin_target}"
    LIBRARY DESTINATION "${module_dir}"
    RUNTIME DESTINATION "${module_dir}"
)

# Install the QML module meta information.
install(FILES "${module_qmldir}"   DESTINATION "${module_dir}")
install(FILES "${module_typeinfo}" DESTINATION "${module_dir}")

# Install QML files, possibly renamed.
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 qml_files_deploy_paths ${i} deploy_path)
    get_filename_component(dst_name "${deploy_path}" NAME)
    get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
    install(FILES "${src_file}" DESTINATION "${module_dir}/${dest_dir}" RENAME "${dst_name}")
endforeach()

# Install resources, possibly renamed.
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 resources_deploy_paths ${i} deploy_path)
    get_filename_component(dst_name "${deploy_path}" NAME)
    get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
    install(FILES "${src_file}" DESTINATION "${module_dir}/${dest_dir}" RENAME "${dst_name}")
endforeach()

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.