QTP0005
qt_add_qml_module 의존성 키워드는 CMake 타겟을 허용합니다.
이 정책은 Qt 6.8에 도입되었습니다. 이 정책은 DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS, DEFAULT_IMPORTS 키워드를 통해 CMake 타겟을 qt_add_qml_module() 에 전달할 수 있도록 합니다.
이 정책을 활성화하면 해당 키워드로 전달되는 인수의 접두사에 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
)IMPORTS, OPTIONAL_IMPORTS, DEFAULT_IMPORTS 에도 동일한 TARGET 구문을 사용할 수 있습니다.
위와 같이 qt_add_qml_module() 을 호출하기 전에 qt_policy(SET QTP0005 NEW) 로 정책을 명시적으로 설정할 수 있습니다. 또는 REQUIRES 버전 6.8 이상에서 qt_standard_project_setup()을 호출하여 해당 버전까지의 모든 정책을 활성화할 수 있습니다.
정책이 OLD 로 설정된 상태에서 DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS, DEFAULT_IMPORTS 에서 TARGET 를 토큰으로 사용하면 Qt 6.8은 사용 중단 경고를 발행합니다. 정책을 OLD 또는 NEW 로 명시적으로 설정하여 경고를 억제하려면 qt_policy 명령을 사용하십시오.
참고: 정책의 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.