qt_add_library
라이브러리를 생성하고 정리합니다.
이 명령어는 Qt6 패키지의 Core 컴포넌트에 정의되어 있으며, 다음과 같이 불러올 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS Core)이 명령어는 Qt 6.2에서 처음 도입되었습니다.
개요
qt_add_library(target
[STATIC | SHARED | MODULE | INTERFACE | OBJECT]
[MANUAL_FINALIZATION]
sources...
)버전 정보가 없는 명령어가 비활성화된 경우, 대신 qt6_add_library() 를 사용하십시오. 이 명령어는 이 명령어와 동일한 인자 집합을 지원합니다.
설명
qt_add_library() 는 CMake의 내장 명령어인 add_library() 를 감싸는 래퍼입니다. 이 명령어는 다음과 같은 작업을 수행합니다:
- 적절한 라이브러리 유형의 CMake 타깃을 생성합니다.
- CMake 타깃의 종료 처리를 수행합니다.
타깃 생성
생성되는 라이브러리의 유형은 add_library() 에서와 마찬가지로 STATIC, SHARED, MODULE, INTERFACE 또는 OBJECT 키워드 중 하나를 사용하여 명시적으로 지정할 수 있습니다. 이러한 키워드가 지정되지 않은 경우, 생성되는 라이브러리 유형은 Qt가 빌드된 방식에 따라 달라집니다. Qt가 정적 방식으로 빌드된 경우 정적 라이브러리가 생성됩니다. 그렇지 않은 경우 공유 라이브러리가 생성됩니다. 이는 CMake의 ` add_library() ` 명령어가 작동하는 방식과는 다르다는 점에 유의하십시오. CMake의 경우 ` BUILD_SHARED_LIBS ` 변수가 생성될 라이브러리 유형을 제어합니다. 6.7 버전부터 ` qt_add_library() ` 명령어는 라이브러리 유형을 결정할 때, 해당 변수가 명시적으로 설정되어 있고 `QTP0003` 이 ` NEW`로 설정된 경우에만 ` BUILD_SHARED_LIBS `를 고려합니다.
지정된 sources 는 add_library() 에 대한 내부 호출로 그대로 전달됩니다.
마무리
타깃이 생성된 후에는 추가 처리나 마무리 단계가 필요할 수 있습니다. 마무리 처리는 qt_finalize_target() 명령어를 통해 구현됩니다.
최종 처리는 이 호출의 일부로 수행되거나, 이 명령이 반환된 후 어느 시점으로 연기될 수 있습니다(단, 여전히 동일한 디렉터리 범위 내에 있어야 합니다). CMake 3.19 이상을 사용할 경우, 최종 처리는 자동으로 현재 디렉터리 범위의 끝으로 연기됩니다. 이를 통해 호출자는 생성된 타깃이 최종 처리되기 전에 해당 속성을 수정할 수 있습니다. CMake 3.19 이전 버전을 사용할 경우, 자동 연기는 지원되지 않습니다. 이 경우, 최종 처리는 이 명령이 반환되기 직전에 수행됩니다.
CMake 버전에 관계없이, ` MANUAL_FINALIZATION ` 키워드를 지정하여 나중에 직접 ` qt_finalize_target()` 을 호출할 것임을 명시할 수 있습니다. 일반적으로 프로젝트가 CMake 3.18 이하를 지원해야 하는 경우가 아니라면 ` MANUAL_FINALIZATION `는 필요하지 않습니다.
qt_finalize_target(), qt_add_executable() 및 QTP0003도 참조하십시오 .
© 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.