QT_ADD_PLUGIN

Qt 플러그인 타겟을 생성합니다.

이 명령은 Qt6 패키지의 Core 컴포넌트에 정의되어 있으며, 다음과 같이 로드할 수 있습니다:

find_package(Qt6 REQUIRED COMPONENTS Core)

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

개요

qt_add_plugin(target
              [SHARED | STATIC]
              [CLASS_NAME class_name]
              [OUTPUT_TARGETS variable_name]
              [MANUAL_FINALIZATION]
              sources...
)

MANUAL_FINALIZATION 옵션과 소스 설정 기능은 Qt 6.5에 도입되었습니다.

버전 없는 명령이 비활성화되어 있으면 qt6_add_plugin() 을 대신 사용하십시오. 이 명령과 동일한 인자 집합을 지원합니다.

설명

Qt 플러그인 타겟은 일반 CMake 라이브러리 타겟보다 추가적인 요구 사항이 있습니다. qt_add_plugin() 명령은 이러한 요구 사항을 충족하기 위해 필요한 처리를 추가합니다. Qt 플러그인 타깃을 정의할 때 내장된 CMake add_library() 명령 대신 이 명령을 호출해야 합니다.

기본적으로 플러그인은 Qt가 정적으로 빌드된 경우 STATIC 라이브러리로, 그렇지 않은 경우 MODULE 라이브러리로 생성됩니다. STATIC 또는 SHARED 옵션을 명시적으로 제공하여 이 기본값을 재정의할 수 있습니다.

제공된 sourcesadd_library() 으로의 내부 호출로 전달됩니다.

참고: 정적이 아닌 플러그인은 빌드 시점에 링크되지 않고 런타임에 동적으로 로드되어야 합니다. CMake는 동적으로 로드되는 라이브러리에는 MODULE 라이브러리 유형을, 직접 링크할 수 있는 라이브러리에는 SHARED 라이브러리 유형을 제공하여 이 두 가지 시나리오를 구분합니다. 이 구분은 심볼 내보내기가 처리되는 방식 때문에 일부 툴체인(특히 Visual Studio)에서 중요합니다. MODULE 라이브러리에 연결하지 못할 수도 있으며, 내보낸 심볼이 없는 SHARED 라이브러리를 생성하면 빌드 시 오류가 발생할 수 있습니다. 따라서 SHARED 옵션을 qt_add_plugin() 으로 전달하면 SHARED 라이브러리가 아닌 MODULE 라이브러리가 생성됩니다.

모든 Qt 플러그인에는 클래스 이름이 있습니다. 기본적으로 이 이름은 target 과 동일하지만 CLASS_NAME 옵션으로 재정의할 수 있습니다. 클래스 이름은 플러그인의 메타데이터를 선언하는 C++ 클래스의 이름에 해당합니다. 정적 플러그인의 경우 플러그인을 애플리케이션으로 가져와 런타임에 사용할 수 있도록 하는 Q_IMPORT_PLUGIN 에 전달되는 이름이기도 합니다.

플러그인이 정적으로 빌드되는 경우 qt_add_plugin() 에서 추가 내부 대상을 정의할 수 있습니다. 이렇게 하면 플러그인에 링크된 모든 실행 파일 또는 공유 라이브러리에 대해 플러그인을 자동으로 가져올 수 있습니다. 프로젝트에서 플러그인을 설치하고 다른 프로젝트에서 링크할 수 있도록 하려는 경우 프로젝트는 이러한 내부 대상도 설치해야 합니다. 이러한 대상의 이름은 OUTPUT_TARGETS 옵션 뒤에 대상 목록을 반환할 변수 이름을 지정하여 얻을 수 있습니다.

마무리

타겟을 만든 후에는 추가 처리 또는 마무리 단계가 필요할 수 있습니다. 최종화 처리는 qt_finalize_target() 명령으로 구현됩니다.

자세한 내용과 MANUAL_FINALIZATION 옵션의 의미는 qt_add_library 에 대한 최종화 문서를 참조하세요.

qt_finalize_target()qt_add_executable()도 참조하세요 .

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