iOS용 Qt

iOS용 Qt를 사용하면 Apple의 iPhoneiPad 기기는 물론 Apple Vision Pro용 애플리케이션을 개발할 수 있습니다.

iOS용 Qt로 개발하려면 시작 가이드를 따라 iOS용 예제관련 주제를 살펴보세요.

지원되는 구성

다음 버전의 빌드 환경 및 런타임 대상 플랫폼은 Qt 6.8에서 지원됩니다.

빌드 환경타겟 플랫폼아키텍처
Xcode 15(iOS 17 SDK) 이상iOS 16 이상(iOS 18 포함)armv8, arm64

참고: iOS에 대한 Apple의 이전 버전 호환성 약속은 일반적으로 새로운 운영 체제 릴리스에서 Qt 애플리케이션이 계속 잘 실행되도록 보장합니다. 발생할 수 있는 문제는 Qt 분기지원 정책에 따라 우선순위가 지정되고 일정이 정해집니다. 새로운 운영 체제 기능에 대한 지원은 일반적으로 패치 릴리스에 포함되지 않습니다.

자동 테스트에 사용되는 대상 장치
디바이스OS 버전아키텍처폼 팩터
iPhone 12iOS 17armv8(arm64)모바일
iPhone 11iOS 17armv8 (arm64)모바일
iPad Pro, 3세대iOS 17armv8 (arm64)태블릿
iPad, 6세대iOS 17armv8 (arm64)태블릿

빌드 환경

iOS용 빌드 환경은 도구 체인(컴파일러, 링커 및 기타 도구)과 빌드 및 링크하는 iOS 플랫폼-SDK(헤더 및 라이브러리)를 모두 포함하는 Apple의 Xcode 애플리케이션에서 제공합니다. 이 두 가지가 함께 애플리케이션을 빌드하는 방법을 정의합니다.

Apple은 일반적으로 사용 가능한 최신 SDK를 기준으로 애플리케이션을 빌드할 것을 권장(App Store의 경우 요구)하므로 항상 Apple에서 제공하는 최신 Xcode를 사용해야 합니다. 새 Xcode 버전은 이전 macOS 버전에서 실행되지 않을 수 있으므로 시스템의 macOS 버전을 업그레이드해야 할 수도 있습니다.

참고: iOS 빌드 환경은 항상 Xcode를 실행하는 macOS 버전이 아니라 사용 중인 Xcode 버전(해당 툴체인 및 SDK)에 의해 전적으로 정의됩니다.

동작 변경 옵트아웃

최신 Xcode 버전 및 SDK를 사용하여 애플리케이션을 빌드할 때 한 가지 주의할 점은 iOS 시스템 프레임워크가 애플리케이션을 빌드한 SDK에 따라 동작 변경을 활성화할지 여부를 결정한다는 것입니다.

이 기술을 통해 Apple은 이전 SDK에 대해 빌드된 바이너리가 최신 iOS 릴리스에서 회귀 없이 계속 실행되도록 할 수 있습니다.

예를 들어 macOS 10.14 Mojave에 다크 모드가 도입되었을 때 macOS는 10.14 SDK에 대해 빌드된 애플리케이션만 다크 모드를 지원하는 것으로 간주하고 이전 SDK에 대해 빌드된 애플리케이션은 기본 라이트 모드 모양으로 남겨둡니다.

이전 SDK에 대해 이전 Xcode 버전으로 빌드하는 것은 이러한 동작 변경을 거부하는 한 가지 방법이지만 최후의 해결책이므로 애플리케이션에 문제를 해결할 다른 방법이 없는 경우에만 적용해야 합니다.

대상 플랫폼

iOS용 빌드에서는 최신 플랫폼 SDK의 헤더 및 라이브러리를 기준으로 애플리케이션을 빌드하는 동시에 SDK 버전보다 낮은 iOS 버전에 애플리케이션을 배포할 수 있는 약 연결 이라는 기술을 사용합니다. 바이너리가 빌드된 SDK보다 낮은 iOS 버전에서 실행될 경우 Qt는 런타임에 플랫폼 기능을 사용할 수 있는지 여부를 확인한 후 이를 활용합니다.

이론적으로는 출시되는 모든 iOS 버전에서 애플리케이션을 실행할 수 있지만, 현실적인(그리고 기술적인) 이유로 이 범위에는 애플리케이션의 배포 대상으로 알려진 하한선이 있습니다. 배포 대상보다 낮은 iOS 버전에서 바이너리를 실행하면 Qt는 오류 메시지를 표시하고 애플리케이션이 실행되지 않습니다.

Qt는 기본적으로 배포 대상을 CMAKE_OSX_DEPLOYMENT_TARGET 또는 QMAKE_MACOSX_DEPLOYMENT_TARGET 변수를 통해 표현하며, 기본적으로 Qt에서 지원되는 최소 배포 대상으로 설정되어 있습니다.

자신의 코드가 Qt 기본값보다 높은 iOS 버전에서 추가된 API를 사용하고 있고 런타임에 해당 API의 사용을 보호하기 위해 @available 검사를 사용하지 않는 경우에만 배포 대상을 높여야 합니다.

CMake로 배포 대상을 올리려면 다음과 같이 하세요:

set(CMAKE_OSX_DEPLOYMENT_TARGET "42.0")

또는 qmake를 사용합니다:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 42.0

참고: 배포 대상을 Qt에서 설정한 기본값보다 낮춰서는 안 됩니다. 그렇게 하면 바이너리가 Qt가 실행할 것으로 예상한 것보다 낮은 iOS 버전에 배포될 경우 런타임에 충돌이 발생할 수 있습니다.

Apple 플랫폼에서의 SDK 기반 개발에 대한 자세한 내용은 Apple의 개발자 문서를 참조하십시오.

시작하기

Xcode 설치하기

Xcode는 iOS용 Qt로 개발하기 위한 필수 요소입니다. App Store에서 설치하거나 Apple의 개발자 웹사이트에서 다운로드할 수 있습니다.

설치가 완료되면 Xcode를 한 번 실행하여 필요한 종속성을 설치하도록 하세요.

그런 다음 xcode-select 도구를 사용하여 시스템이 올바른 Xcode 설치를 사용하고 있는지 확인합니다.

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

결과가 예상과 일치하지 않으면 Xcode 설치를 명시적으로 선택하세요.

$ sudo xcode-select --switch /Applications/Xcode.app

Xcode와 함께 제공되는 시뮬레이터에서 Qt 애플리케이션을 테스트하려면 이것만 있으면 됩니다. 그러나 실제 기기에서 애플리케이션을 실행하거나 App Store에 애플리케이션을 게시하려면 Apple 개발자 프로그램에 가입하고 개발자 인증서 및 프로비저닝 프로필을 설정해야 합니다.

Qt 애플리케이션을 빌드하기 전에 기기에서 표준 Xcode 애플리케이션 템플릿 중 하나를 실행하는 등 Xcode가 올바르게 설정되었는지 테스트해야 합니다.

Qt 설치 또는 빌드하기

Qt를 설치하거나 빌드하려면 일반적인 Qt 시작하기 가이드를 따르십시오.

명령줄에서 애플리케이션 빌드하기

CMake 또는 qmake를 사용하여 iOS 애플리케이션을 빌드하는 방법을 정의할 수 있습니다. CMake와 qmake 모두 xcodeproj 파일을 생성할 수 있으며, 이 파일을 명령줄에서 로드하고 빌드할 수 있습니다.

CMake 사용

<Qt-dir>/<version>/ios/bin/ 에 있는 qt-cmake 편의 스크립트가 툴체인과 올바른 아키텍처를 설정해 줍니다.

qt-cmake 편의 스크립트 사용:

<Qt-dir>/<version>/ios/bin/qt-cmake <source-dir>

생성된 xcodeproj 파일을 사용하여 Xcode를 사용하여 애플리케이션을 빌드하거나 명령줄에서 xcodebuild 을 실행할 수 있습니다. 애플리케이션에 사용 가능한 대상 및 스키마 목록을 보려면 다음 명령을 실행하세요:

xcodebuild -list -project <your-app>.xcodeproj

그런 다음 xcodebuild build 을 실행하여 애플리케이션 세부 정보를 전달합니다:

xcodebuild build -allowProvisioningUpdates -project <your-app>.xcodeproj -scheme <your-scheme> -configuration Debug -destination "generic/platform=iOS" -destination-timeout 1 ENABLE_ONLY_ACTIVE_RESOURCES=NO

qmake 사용

먼저 qmake를 사용하여 애플리케이션을 빌드하는 방법을 정의합니다. 그런 다음 생성된 xcodeproj 파일을 사용하여 Xcode 또는 명령줄에서 애플리케이션을 빌드합니다.

qmake <your-app>.pro

qmake는 xcodebuild 을 차례로 호출하는 래퍼 Makefile을 생성하므로 make 을 실행하여 애플리케이션을 빌드할 수 있습니다:

make -j8

소스 파일을 추가하거나 제거할 때와 같이 설정이 변경되면 프로젝트를 다시 임포트해야 한다는 점에 유의하세요.

Xcode 프로젝트 설정 사용자 지정하기

예를 들어 QMAKE_MAC_XCODE_SETTINGS qmake 변수를 사용하여 Xcode 설정을 사용자 지정할 수 있습니다:

development_team.name = DEVELOPMENT_TEAM
development_team.value = <your-team-id>
QMAKE_MAC_XCODE_SETTINGS += development_team

다른 qmake 변수도 유용합니다:

QMAKE_TARGET_BUNDLE_PREFIX = com.<your-company>
QMAKE_BUNDLE = <your-app>

Xcode에서 애플리케이션 실행하기

qmake 및 CMake로 생성된 Xcode 프로젝트는 iOS 기기 및 iOS 시뮬레이터 모두에서 애플리케이션 실행을 지원합니다.

참고: iOS용 Qt 시뮬레이터 라이브러리의 기본 아키텍처는 x86_64 이므로 애플리케이션은 Apple Silicon Mac에서 Rosetta로 실행되어야 합니다. Rosetta 기반 실행 대상이 Xcode의 실행 대상 메뉴에 나열되어 있지 않은 경우 Product > Destination > Destination Architectures 메뉴를 통해 활성화할 수 있습니다.

다음을 사용하여 애플리케이션 빌드 및 실행 Qt Creator

iOS용 Qt 애플리케이션을 설정하고 실행하는 방법에 대한 정보는 Qt Creator 문서에서 확인할 수 있습니다:

  • Qt Creator: iOS 기기 연결하기.

이 경우에도 작동하는 Xcode 설치가 필요합니다.

iOS용 예제

Qt Creator 에서 iOS에서 테스트된 예제를 찾아볼 수 있습니다. Qt Creator 시작 모드에서 ios 키워드를 사용하여 예제를 검색할 수 있습니다. 일부 예제에는 기능이 제한되어 있을 수 있습니다.

iOS 기기에서 작동하는 것으로 알려진 예제 목록을 보려면 iOS용 Qt 예제를 참조하세요.

다음 항목에서는 iOS용 Qt에 대한 자세한 내용을 설명합니다:

Qt 애플리케이션에서 Objective-C 코드 사용하기

Apple 플랫폼의 애플리케이션에 사용되는 컴파일러인 Clang은 C++와 Objective-C 코드의 혼합을 허용합니다. 이 모드를 활성화하려면 관련 소스 파일에 .mm 확장자를 사용하고 평소와 같이 프로젝트에 추가합니다.

CMake로:

target_sources(myapp PRIVATE objc_code.mm)

qmake 사용:

SOURCES += objc_code.mm

그러면 Qt 애플리케이션에서 Apple 개발자 라이브러리의 Objective-C 프레임워크를 사용할 수 있습니다.

모든 소스 파일의 이름을 바꿀 필요 없이 애플리케이션의 나머지 부분에 기능을 노출하려면 헤더에 헬퍼 함수를 선언하고 Objective-C++ 소스 파일에서 해당 기능을 구현하면 됩니다:

// objc_code.h
QString localizedHostName();

// objc_code.mm
#include <Foundation/NSHost.h>
QString localizedHostName()
{
    return QString::fromNSString(NSHost.currentHost.localizedName);
}

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