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 ` 옵션을 명시적으로 지정하여 이 기본값을 재정의할 수 있습니다.
지정된 sources 는 add_library() 에 대한 내부 호출로 전달됩니다.
참고: 비정적 플러그인은 빌드 시에 링크되는 것이 아니라 런타임에 동적으로 로드되도록 설계되었습니다. CMake는 동적으로 로드되는 라이브러리에는 MODULE 라이브러리 유형을, 직접 링크될 수 있는 라이브러리에는 SHARED 라이브러리 유형을 제공함으로써 이 두 가지 시나리오를 구분합니다. 이 구분은 심볼 내보내기 처리 방식 때문에 일부 툴체인(특히 Visual Studio)에서 중요합니다. MODULE 라이브러리에 링크하는 것이 불가능할 수 있으며, 내보내진 심볼이 없는 SHARED 라이브러리를 생성하면 빌드 시 오류가 발생할 수 있습니다. 따라서 qt_add_plugin() 에 SHARED 옵션을 전달하면, 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()도 참조하십시오 .
© 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.