QT_ADD_QML_PLUGIN
개요
qt_add_qml_plugin( target [BACKING_TARGET backing_target] [STATIC | SHARED] [OUTPUT_DIRECTORY] [URI] [CLASS_NAME] [NO_GENERATE_PLUGIN_SOURCE] [NAMESPACE namespace] )
버전 없는 명령이 비활성화되어 있으면 qt6_add_qml_plugin()
을 대신 사용합니다. 이 명령과 동일한 인수 집합을 지원합니다.
설명
이 명령은 QML 모듈과 연결된 플러그인 타깃을 생성합니다. 일반적으로 이 함수는 내부적으로 qt_add_qml_module() 에 의해 호출되어 지원 대상과 연결된 플러그인을 생성하거나 업데이트합니다. 특별한 방법으로 타깃을 생성해야 하는 특별한 상황이 아니라면 이 함수를 직접 호출해서는 안 됩니다.
qt_add_qml_module() 에 대한 설명서는 QML 모듈과 관련된 CMake 타깃을 배열하는 방법에 대한 다양한 구조 패턴을 설명합니다. QML 모듈에 별도의 지원 대상이 없고 모든 기능이 플러그인에서 직접 구현되는 경우(권장되는 배열이 아님), qt_add_qml_plugin()
대신 qt_add_qml_module() 을 호출해야 한다는 점에 유의하세요.
인자
target
은 QML 플러그인에 사용할 대상의 이름을 지정합니다. 아직 존재하지 않으면 생성됩니다.
BACKING_TARGET
플러그인이 연결된 백업 대상의 이름을 지정합니다. 백킹 타깃은 플러그인 target
과 동일할 수 있지만, 이 경우 병합된 타깃이 하나만 있지만 일반적으로 권장되지 않습니다 (자세한 내용은 qt_add_qml_module() 참조). BACKING_TARGET
은 플러그인 타깃을 백킹 타깃보다 먼저 만들어야 하는 특별한 상황이 아니라면 항상 제공해야 합니다. BACKING_TARGET
을 제공하지 않으면 URI
옵션을 제공해야 합니다.
기본적으로 플러그인은 백업 대상과 호환되는 유형으로 생성됩니다. 백업 대상이 정적 라이브러리인 경우 플러그인도 정적 라이브러리로 생성됩니다. 백업 대상이 공유 라이브러리인 경우 플러그인은 모듈 라이브러리로 생성됩니다. 백업 대상이 제공되지 않거나 플러그인에 별도의 백업 대상이 없는 경우 STATIC
또는 SHARED
키워드를 사용하여 플러그인 유형을 지정할 수 있습니다. 앞의 조건에 의해 플러그인 유형이 결정되지 않으면, Qt가 정적 라이브러리로 빌드된 경우 정적 플러그인이, 그렇지 않은 경우 모듈 라이브러리 플러그인이 생성됩니다.
OUTPUT_DIRECTORY
는 플러그인 라이브러리가 생성될 디렉터리를 지정합니다. 이 디렉터리는 항상 QML 모듈의 qmldir 파일과 같은 위치여야 합니다. OUTPUT_DIRECTORY
을 지정하지 않으면 BACKING_TARGET
에 저장된 정보(사용 가능한 경우)에서 가져옵니다. 이 디렉터리는 백업 대상의 자체 라이브러리 디렉터리와 다를 수 있습니다. 백업 대상에서 출력 디렉터리를 얻을 수 없는 경우 기본적으로 CMAKE_CURRENT_BINARY_DIR
이 사용됩니다.
URI
는 이 플러그인이 연결된 QML 모듈의 모듈 식별자를 선언합니다. 모듈 식별자는 QML 모듈의 (점선으로 표시된 URI 표기법) 식별자입니다. URI
이 지정되지 않은 경우 BACKING_TARGET
을 제공해야 하며 지원 대상에 해당 URI가 기록되어 있어야 합니다(일반적으로 이전에 qt_add_qml_module() 호출에 의해).
각 플러그인에는 모듈을 QML 엔진에 등록하는 C++ 클래스가 있어야 합니다. 기본적으로 qt_add_qml_plugin()
은 이 C++ 클래스의 소스를 자동 생성하고 target
의 소스 목록에 추가합니다. 생성된 플러그인 클래스는 선택 사항인 플러그인의 요구 사항을 충족합니다( 모듈 정의 qmldir 파일 참조). 클래스 이름은 다음과 같이 결정됩니다:
CLASS_NAME
이 지정되어 있으면 이 이름이 사용됩니다. 이 이름은 QML 모듈의qmldir
파일에 사용된 이름과 일치해야 합니다.CLASS_NAME
이 지정되지 않았지만BACKING_TARGET
이 지정되어 있으면 해당 지원 대상에 기록된 세부 정보에서 C++ 클래스 이름을 가져옵니다. 이러한 세부 정보는 일반적으로 이전에 qt_add_qml_module() 호출을 통해 기록되며, 생성된qmldir
파일에 사용된 이름과 일치합니다. 대부분의 시나리오에서 클래스 이름을 제공하는 데 권장되는 방법입니다.- 그래도 클래스 이름을 확인할 수 없는 경우에는 점을 밑줄로 바꾸고
Plugin
을 추가한 모듈의 URI로 설정합니다.
네임스페이스가 NAMESPACE
키워드로 지정되면 플러그인 코드가 이 이름의 C++ 네임스페이스로 생성됩니다.
일부 플러그인은 플러그인 클래스를 수동으로 작성해야 할 수도 있습니다. 예를 들어 플러그인에서 추가 초기화를 수행하거나 기본 플러그인 클래스에서 구현되지 않은 사항을 등록해야 할 수 있습니다. 이러한 경우 NO_GENERATE_PLUGIN_SOURCE
옵션을 제공할 수 있습니다. 그런 다음 직접 C++ 플러그인 클래스를 작성하여 target
에 추가해야 합니다. 직접 플러그인 클래스를 작성해야 하는 경우 플러그인을 옵션으로 지정할 수 있는 경우는 거의 없습니다. 즉, QML 모듈을 정의할 때 qt_add_qml_module() 호출에 NO_PLUGIN_OPTIONAL
키워드가 포함되어야 하며, 그렇지 않으면 생성된 qmldir
파일이 올바르지 않습니다. 플러그인 클래스가 바로 위의 로직에서 결정된 것과 동일한 클래스 이름을 사용하는지 확인하세요.
© 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.