이 페이지에서

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 타깃의 파기(finalization)를 처리합니다.

타깃 생성

Android를 제외한 모든 플랫폼에서는 실행 파일 타깃이 생성됩니다. ` MANUAL_FINALIZATION `(지정된 경우)를 제외한 모든 인수는 표준 CMake ` add_executable() ` 명령으로 전달됩니다. Android에서는 ` MODULE ` 라이브러리가 생성되며, ` WIN32 ` 또는 ` MACOSX_BUNDLE ` 옵션은 무시됩니다. 또한 Android의 경우 일부 타깃 속성이 다음과 같이 설정됩니다:

  • SUFFIX 타겟 속성은 라이브러리 파일 이름에 아키텍처별 접미사를 부여하도록 설정됩니다.
  • 생성된 바이너리에서 main() 함수가 노출되도록 보장하기 위해 다양한 <lang>_VISIBILITY_PRESET 타깃 속성이 default 로 설정됩니다.

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의 배포 설정에 영향을 미치지만, 이러한 설정은 타겟 파이널라이제이션의 일환으로 출력됩니다. CMake 3.19 이전 버전의 사용을 지원하기 위해, ` MANUAL_FINALIZATION ` 키워드를 추가하여 타겟 파이널라이제이션에 대한 책임을 직접 맡습니다.

qt_add_executable(complexapp MANUAL_FINALIZATION complex.cpp)
set_target_properties(complexapp PROPERTIES OUTPUT_NAME Complexify)
qt_finalize_target(complexapp)

경고: Android 프로젝트를 CMake 3.19보다 낮은 버전으로 빌드하는경우 , 최상위 CMakeLists.txt 파일의 마지막에 qt_finalize_project()를 호출해야 합니다.

참조: qt_finalize_target(), qt_set_finalizer_mode(), qt_add_library(), qt_finalize_project().

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