이 페이지에서

QTP0005

qt_add_qml_module() 의존성 키워드가 CMake 타깃을 허용하도록 합니다.

DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS 및 DEFAULT_IMPORTS 키워드를 통해 qt_add_qml_module() 에 CMake 타깃을 전달할 수 있습니다.

이 정책을 활성화하면 해당 키워드에 전달된 인수의 앞에 TARGET 를 접두사로 붙일 수 있으며, 이 경우 해당 인수는 CMake 타깃 이름으로 처리됩니다. QML 모듈 URI와 임포트 경로는 타깃에서 자동으로 파생됩니다.

이 정책의 OLD 동작은 TARGET name 토큰 시퀀스를 TARGET 및 name 라는 두 개의 별도 URI로 처리하는 것입니다.

이 정책의 ` NEW ` 동작에서는 ` TARGET `이 키워드로 간주됩니다. URI는 그 뒤에 오는 QML 모듈 타깃에서 추출됩니다. ` TARGET ` 뒤에 오는 이름이 기존 타깃을 참조하지 않거나, 해당 타깃이 QML 모듈에 해당하지 않는 경우 심각한 오류가 발생합니다.

NEW 및 OLD 동작 모두에서 슬래시와 버전을 추가하여 모듈 버전을 지정할 수 있습니다. 자세한 내용은 모듈 종속성 선언을 참조하십시오.

배경

이 정책이 도입되기 전에는 QML 모듈 종속성을 문자열 URI(예: QtQuick 또는 com.example.mymodule)로 선언해야 했습니다. 이는 URI와(필요한 경우) 종속성의 임포트 경로를 해당 모듈을 제공하는 CMake 타깃과 일관되게 유지해야 함을 의미했습니다.

NEW 방식에서는 대신 CMake 타깃 이름을 사용하여 종속성을 참조할 수 있습니다. 그러면 빌드 시스템이 타깃에서 올바른 URI와 임포트 경로를 자동으로 결정합니다. 이를 통해 기본 QML 임포트 경로 외부의 종속성에 대해 IMPORT_PATH 항목을 수동으로 지정할 필요가 없어지고, 중복이 줄어들며, 복사-붙여넣기 오류의 일종이 사라집니다.

예시

동일한 프로젝트에 정의된 다른 모듈에 의존하는 모듈을 생각해 봅시다. ‘ OLD ’ 동작(또는 Qt 6.8 이전)을 사용할 경우, URI를 명시적으로 작성해야 합니다:

qt_add_qml_module(my_module
    URI MyModule
    VERSION 1.0
    DEPENDENCIES
        OtherModule
)

NEW 동작(정책 QTP0005가 NEW 로 설정된 경우)을 사용하면 CMake 타깃 이름으로 종속성을 참조할 수 있습니다:

qt_policy(SET QTP0005 NEW)

qt_add_qml_module(other_module
    URI OtherModule
    VERSION 1.0
)

qt_add_qml_module(my_module
    URI MyModule
    VERSION 1.0
    DEPENDENCIES
        TARGET other_module
)

동일한 TARGET 구문은 IMPORTS, OPTIONAL_IMPORTS 및 DEFAULT_IMPORTS 에서도 사용할 수 있습니다.

모듈 타깃이 실행 파일이고 TARGET 종속성이 사용되는 경우, qt_add_qml_module() 은 빌드 디렉터리의 실행 파일 옆에 qt.conf 파일을 자동으로 생성합니다. 이 파일은 TARGET 종속성으로 지정된 QML 모듈을 런타임에 찾을 수 있도록 QML 임포트 경로를 구성합니다. 이 동작을 억제하려면 NO_GENERATE_QTCONF 을 사용하십시오.

위에서 보았듯이, qt_add_qml_module() 을 호출하기 전에 qt_policy(SET QTP0005 NEW) 을 사용하여 정책을 명시적으로 설정할 수 있습니다. 또는 REQUIRES 버전이 6.8 이상인 qt_standard_project_setup() 을 호출하여 해당 버전까지의 모든 정책을 활성화할 수도 있습니다.

Qt 6.8에서는 정책이 OLD 로 설정된 상태에서 DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS 또는 DEFAULT_IMPORTS 에서 TARGET 을 토큰으로 사용할 경우 사용 중단 경고가 발생합니다. qt_policy() 명령을 사용하여 정책을 OLD 또는 NEW 로 명시적으로 설정하면 이 경고를 억제할 수 있습니다.

참고: 정책의` OLD `동작은 더 이상 권장되지 않으며, 향후 제거될 수 있습니다.

qt_policy(), qt_standard_project_setup(), qt_cmake_policies 및 qt_add_qml_module()도 참조하십시오 .

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