QT_ADD_EXECUTABLE
플랫폼별 유형의 애플리케이션 타깃을 생성하고 마무리합니다.
이 명령은 Qt6
패키지의 Core
컴포넌트에 정의되어 있으며, 다음과 같이 로드할 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS Core)
이 명령은 Qt 6.0에 도입되었습니다.
개요
qt_add_executable(target [WIN32] [MACOSX_BUNDLE] [MANUAL_FINALIZATION] sources...)
버전 없는 명령을 사용할 수 없는 경우 qt6_add_executable()
을 대신 사용합니다. 이 명령은 이 명령과 동일한 인수 집합을 지원합니다.
설명
이 명령은 다음 작업을 수행합니다:
- 대상 플랫폼에 적합한 유형의 CMake 대상을 만듭니다.
- 대상을
Qt::Core
라이브러리에 연결합니다. - CMake 대상의 최종화를 처리합니다.
타겟 생성
Android를 제외한 모든 플랫폼에서 실행 가능한 타깃이 생성됩니다. MANUAL_FINALIZATION
(있는 경우)을 제외한 모든 인수는 표준 CMake add_executable()
명령으로 전달됩니다. Android에서는 MODULE
라이브러리가 생성되며 WIN32
또는 MACOSX_BUNDLE
옵션은 무시됩니다. 일부 대상 프로퍼티도 Android용으로 설정됩니다:
SUFFIX
대상 속성은 라이브러리 파일 이름에 아키텍처별 접미사를 지정하도록 설정됩니다.- 다양한
<lang>_VISIBILITY_PRESET
대상 속성은default
으로 설정되어main()
함수가 결과 바이너리에 표시되도록 합니다.
Qt::Core 링크하기
모든 Qt 애플리케이션은 Qt::Core
라이브러리에 링크해야 하므로 편의를 위해 이 작업을 수행합니다.
마무리
타겟이 생성된 후에는 일반적으로 추가 처리 또는 마무리 단계가 필요합니다. 수행해야 할 단계는 플랫폼과 타겟의 다양한 속성에 따라 다릅니다.
최종화 처리는 두 가지 명령, 즉 qt_finalize_target() 및 qt_finalize_project()로 구현됩니다.
대상 최종화는 qt_add_executable
호출의 일부로 수행하거나 이 명령이 반환된 후로 연기할 수 있습니다(하지만 여전히 동일한 디렉토리 범위에 있어야 합니다).
CMake 3.19 이상을 사용하는 경우, 대상 최종화는 자동으로 현재 디렉토리 범위의 끝으로 연기됩니다. 따라서 호출자는 생성된 타깃이 최종화되기 전에 해당 타깃의 속성을 수정할 수 있습니다. CMake 3.19 이전 버전을 사용하는 경우 자동 지연이 지원되지 않습니다. 이 경우 이 명령이 반환되기 직전에 대상 최종화가 수행됩니다.
CMake 버전에 관계없이 MANUAL_FINALIZATION
키워드를 지정하여 나중에 명시적으로 qt_finalize_target() 대신 직접 호출할 것임을 나타낼 수 있습니다. 일반적으로 프로젝트가 CMake 3.18 이하를 지원해야 하는 경우가 아니라면 MANUAL_FINALIZATION
은 필요하지 않습니다.
프로젝트 최종화는 CMake 3.19 이상을 사용할 때 자동으로 수행됩니다. 이전 CMake 버전을 사용하는 경우 루트 CMakeLists.txt
파일 끝에서 qt_finalize_project()를 수동으로 호출해야 합니다. 이는 배포 목적으로 프로젝트 대상 간의 종속성을 수집하기 위해 Android를 타겟팅할 때 특히 중요합니다.
예제
다음과 같은 간단한 경우에는 최종화가 자동으로 처리됩니다. CMake 3.19 이전 버전을 사용하는 경우 호출의 일부로 즉시 파이널라이제이션이 수행됩니다. CMake 3.19 이상을 사용하는 경우 현재 디렉터리 범위의 끝에서 최종화가 수행됩니다.
qt_add_executable(simpleapp main.cpp)
다음 예제는 최종화를 연기해야 하는 시나리오를 보여줍니다. OUTPUT_NAME
대상 속성은 Android의 배포 설정에 영향을 주지만 이러한 설정은 대상을 마무리할 때 작성됩니다. 3.19 이전 CMake 버전 사용을 지원하기 위해 MANUAL_FINALIZATION
키워드를 추가하여 타겟을 마무리하는 책임을 넘겨받습니다.
qt_add_executable(complexapp MANUAL_FINALIZATION complex.cpp) set_target_properties(complexapp PROPERTIES OUTPUT_NAME Complexify) qt_finalize_target(complexapp)
경고: 안드로이드 프로젝트가 3.19보다 낮은 CMake 버전을 사용하여 빌드된 경우 최상위 CMakeLists.txt의 마지막에 qt6_finalize_project()를 호출해야 합니다.
qt_finalize_target(), qt_set_finalizer_mode(), qt_add_library() 및 qt_finalize_project()도 참조하십시오 .
© 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.