QT_SET_FINALIZER_MODE

대상의 파이널라이제이션의 측면을 사용자 정의합니다.

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

참고: 이 명령은 기술 프리뷰 버전이며 향후 릴리스에서 변경될 수 있습니다.

개요

qt_set_finalizer_mode(target
    ENABLE | DISABLE
    MODES modes...
)

버전리스 명령이 비활성화되어 있는 경우 qt6_set_finalizer_mode() 을 대신 사용합니다. 이 명령과 동일한 인수 집합을 지원합니다.

설명

이 명령은 특정 target 의 마무리 작업의 일부 측면을 사용자 지정하는 데 사용됩니다. 다음 시나리오 중 하나에서 발생하는 target 가 완료되기 전에 호출되는 경우에만 효과가 있습니다:

  • 프로젝트가 target 에 대해 명시적으로 qt_finalize_target()을 호출하는 경우. 이는 일반적으로 target 이 정의될 때 MANUAL_FINALIZATION 키워드가 qt_add_executable() 에 전달되었음을 의미합니다.
  • CMake 3.17 이하를 사용하는 경우, 이 경우 최종화는 항상 qt_add_executable() 호출의 일부로 즉시 발생합니다.
  • CMake 3.18 이상을 사용하는 경우, target 이 정의될 때 MANUAL_FINALIZATION 키워드가 qt_add_executable() 에 전달되지 않았고 target 의 디렉터리 범위 끝에서 지연된 최종화가 완료되었습니다.

qt_set_finalizer_mode()모드 목록을 활성화 또는 비활성화하는 데 사용되며, 여기서 모드는 최종화의 특정 측면에 해당합니다. 현재 지원되는 최종화 모드는 다음과 같습니다:

모드기본값최종화 동작
static_pluginsEnabledQt가 정적으로 빌드될 때, 정적 플러그인에 대한 초기화 객체 라이브러리를 생성합니다. target 가 실행 파일이고 이 최종화 모드가 활성화된 경우 target 에 필요한 모든 플러그인 이니셜라이저 객체 라이브러리가 직접 링크됩니다. 이렇게 하면 Qt 제공 정적 라이브러리 간의 주기를 방지하고 링크 시간을 줄일 수 있습니다. 이 파이널라이저 모드가 비활성화되면 각 플러그인 이니셜라이저는 대신 관련 Qt 라이브러리의 사용 요구 사항을 통해 전파되므로 주기가 발생할 수 있습니다. Qt가 정적으로 빌드되지 않은 경우 이 파이널라이저 모드는 관련이 없으며 사용되지 않습니다.

예제

다음 예제에서는 CMake 3.19 이상(지연된 최종화에 필요)을 사용한다고 가정합니다:

qt_add_executable(my_app main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)

수동 최종화를 사용하는 동일한 예제는 다음과 같습니다:

qt_add_executable(my_app MANUAL_FINALIZATION main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
qt_finalize_target(my_app)

qt_finalize_target()도 참조하십시오 .

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