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 모듈의 모든 부분을 배포할 수 있습니다. 프로젝트는 target 및 관련 플러그인 타깃(모듈에 타깃이 있고 백킹과 분리되어 있는 경우 target)을 표준 install(TARGETS) 명령을 사용하여 설치해야 합니다. 그 외의 모든 것은 install(FILES)로 배포할 수 있습니다.

인수

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

URIVERSION 는 각각 모듈의 URL과 버전을 제공합니다.

PLUGIN_TARGET 는 QML 모듈의 플러그인 대상 이름을 가져오는 데 사용할 수 있습니다. 모든 QML 모듈에 플러그인이 있는 것은 아니므로 이 옵션에 대해 반환되는 값은 빈 문자열일 수 있습니다. QML 모듈에 별도의 지원 대상이 없는 경우 target 은 플러그인 대상과 동일합니다.

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

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

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

TYPEINFO 모듈의 typeinfo 파일(있는 경우)의 경로를 제공합니다. 모듈에 typeinfo 파일이 없는 경우 빈 문자열이 됩니다. typeinfo 파일은 qmldir 파일과 같은 경로에 배포해야 합니다.

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

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

QML_FILES_DEPLOY_PATHSQML_FILES 와 정확히 같은 수의 요소를 가진 목록을 제공합니다. QML_FILES_DEPLOY_PATHS 목록의 각 요소는 QML_FILES 의 해당 요소가 배포되어야 하는 대상 경로 아래의 경로입니다. QML_FILES_DEPLOY_PATHS 의 경로에는 파일 이름이 포함되는데, 리소스 별칭 사용으로 인해 QML_FILES 의 파일 이름과 다를 수 있습니다( QT_RESOURCE_ALIAS 참조).

QML_FILES_DEPLOY_PATHS 의 항목은 빈 문자열일 수도 있습니다. 사용자 지정 접두사를 사용하면 일반적으로 파일이 QML 모듈의 대상 경로 외부에 위치하므로, 사용자 지정 PREFIX 과 함께 qt_target_qml_sources() 를 사용하여 추가된 파일은 배포 경로가 없습니다.

QML_FILES_PREFIX_OVERRIDESQML_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 는 QML 모듈에 추가된 모든 파일 목록을 qt_add_qml_module() 또는 qt_target_qml_sources()의 RESOURCES 인수로 제공합니다. 모든 경로는 절대 경로입니다. RESOURCES_DEPLOY_PATHSRESOURCES_PREFIX_OVERRIDES 의 의미와 사용법은 각각 QML_FILES_DEPLOY_PATHSQML_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()

© 2025 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.