このページでは

iOS向けQt

Qt for iOS を使用すると、Apple のiPhoneやiPadデバイス、およびApple Vision Pro 向けのアプリケーションをビルドできます。

Qt for iOS を使用して開発を行うには、入門ガイドに従い、その後、iOS 向けのサンプルや関連トピックを参照してください。

サポートされている構成

Qt 6.12 では、以下のバージョンのビルド環境およびランタイム対象プラットフォームがサポートされています。

ビルド環境ターゲットプラットフォームアーキテクチャ
Xcode 16 (iOS 18 SDK) 以降iOS 18 以降(iOS 26 を含む)armv8,arm64

注:AppleによるiOSの 将来互換性の保証により 、通常、Qtアプリケーションは新しいオペレーティングシステムのリリースでも問題なく動作し続けます。発生する可能性のある問題は、Qtのブランチング およびサポートポリシーに従って優先順位が付けられ、対応スケジュールが組まれます。新しいオペレーティングシステムの機能に対するサポートは、通常、パッチリリースには含まれません。

自動テストで使用されるターゲットデバイス
デバイスOSバージョンアーキテクチャフォームファクター
iPhone 12iOS 17armv8 (arm64)モバイル
iPhone 11iOS 17armv8 (arm64)モバイル
iPad Pro(第3世代)iOS 17armv8 (arm64)タブレット
iPad(第6世代)iOS 17armv8 (arm64)タブレット
iPad(第9世代)iOS 18armv8 (arm64)タブレット
iPhone 16eiOS 18armv8 (arm64)モバイル
iPad Air M3iOS 18armv8 (arm64)タブレット

ビルド環境

iOSのビルド環境は、AppleのXcodeアプリケーションによって提供されます。これには、ツールチェーン(コンパイラ、リンカ、その他のツール)と、ビルドやリンクに使用するiOSプラットフォームSDK(ヘッダーおよびライブラリ)の両方が含まれています。これらによって、アプリケーションのビルド方法が定義されます。

Appleは通常、アプリケーションを最新版のSDKを使用してビルドすることを推奨しており(App Storeの場合は必須となっています)、そのため、常にAppleから提供されている最新のXcodeを使用する必要があります。新しいバージョンのXcodeは古いバージョンのmacOSでは動作しない可能性があるため、システムのmacOSバージョンをアップグレードする必要がある場合があります。

注: iOSの ビルド環境は 、常に使用しているXcodeのバージョン(そのツールチェーンとSDK)によって完全に定義されます。Xcodeを実行しているmacOSのバージョンによって定義されるわけではありません。

動作変更の適用除外

最新のXcodeバージョンとSDKを使用してアプリケーションをビルドする際の注意点として、iOSシステムフレームワークは、アプリケーションのビルドに使用したSDKに基づいて、動作の変更を有効にするかどうかを判断する場合があります。

この手法により、Appleは、古いSDKに基づいてビルドされたバイナリが、新しいiOSリリースでも機能の退行(リグレッション)を起こすことなく引き続き動作することを保証できます。

たとえば、macOS 10.14 Mojaveでダークモードが導入された際、macOSは10.14 SDKに対してビルドされたアプリケーションのみをダークモード対応として扱い、それ以前のSDKに対してビルドされたアプリケーションについては、デフォルトのライトモードの外観のままにしていました。

古いバージョンのXcodeと古いSDKを使用してビルドすることは、このような動作の変更を回避する一つの方法ですが、これは最後の手段であり、アプリケーションにこの問題を回避する他の方法がない場合にのみ適用すべきです。

ターゲットプラットフォーム

iOS 向けのビルドでは、「weak linking」と呼ばれる手法が利用されます。これにより、最新のプラットフォーム SDK のヘッダーやライブラリを使用してアプリケーションをビルドしながら、SDK のバージョンよりも低い iOS バージョンにもアプリケーションをデプロイすることが可能になります。 ビルドに使用した SDK よりも古いバージョンの iOS でバイナリが実行されると、Qt は実行時に、プラットフォーム機能が利用可能かどうかを、その機能を利用する前にチェックします。

理論上は、これによりリリースされたすべての iOS バージョンでアプリケーションを実行できるはずですが、実用上(および技術上)の理由から、この範囲には下限があり、これはアプリケーションの「デプロイメントターゲット」として知られています。バイナリがデプロイメントターゲットより低いバージョンの iOS で起動されると、Qt はエラーメッセージを表示し、アプリケーションは実行されません。

Qtでは、デプロイメントターゲットを CMAKE_OSX_DEPLOYMENT_TARGET またはQMAKE_MACOSX_DEPLOYMENT_TARGET 変数を通じて表します。これらはデフォルトで、Qtがサポートする最小のデプロイメントターゲットに設定されています。

デプロイメントターゲットを引き上げる必要があるのは、自身のコードでQtのデフォルトよりも新しいiOSバージョンで追加された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は、Qt for iOSでの開発に必須です。App Storeからインストールするか、Appleの開発者向けウェブサイトからダウンロードすることができます。

インストールが完了したら、Xcodeを1回実行して、必要な依存関係をインストールしてください。

その後、xcode-select ツールを使用して、システムが正しいXcodeインストールを使用していることを確認してください。

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

出力結果が期待通りでない場合は、Xcodeのインストール先を明示的に指定してください。

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

Qt for iOS シミュレータライブラリのアーキテクチャはx86_64 であるため、Apple Silicon搭載のMacでは、iOSシミュレータをRosetta下で実行する必要があります。Xcode 26以降では、これを行うには、Xcodeの設定でデフォルトでインストールされているiOSプラットフォームコンポーネントを削除し、その後、ユニバーサルiOSプラットフォームコンポーネントを手動でインストールする必要があります:

xcodebuild -downloadPlatform iOS -architectureVariant universal

Xcodeに付属のシミュレータでQtアプリケーションをテストするには、これだけで十分です。ただし、実機でアプリケーションを実行したり、App Storeにアプリケーションを公開したりするには、Apple Developer Programに参加し、開発者証明書とプロビジョニングプロファイルを設定する必要があります。

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 シミュレータの両方でアプリケーションを実行することをサポートしています。

注: Qt for iOS シミュレータライブラリのデフォルトアーキテクチャはx86_64であるため 、Apple Silicon搭載のMacでは、アプリケーションはRosetta下で実行する必要があります。Xcodeの実行先メニューにRosettaベースの実行先が表示されていない場合は、「Product > Destination > Destination Architectures 」メニューから有効にすることができます。

アプリケーションのビルドと実行Qt Creator

Qt for iOS アプリケーションの設定および実行方法については、『Qt Creator 』のドキュメントを参照してください:

なお、これには正常に動作するXcodeのインストールが依然として必要です。

iOSの例

Qt Creator では、iOSでテスト済みのサンプルを確認できます。「ios 」というキーワードを使用して、「Qt Creator 」のウェルカムモードでサンプルを検索してください。なお、一部のサンプルでは機能が制限されている場合がありますのでご注意ください。

iOS デバイスで動作することが確認されている例の一覧については、「Qt for iOS Examples」をご覧ください。

以下のトピックでは、Qt for iOS に関する詳細情報を提供しています:

QtアプリケーションでのObjective-Cコードの使用

Appleプラットフォーム上のアプリケーションで使用されるコンパイラであるClangでは、C++コードとObjective-Cコードを混在させることができます。このモードを有効にするには、該当するソースファイルに.mm 拡張子を付け、通常通りプロジェクトに追加してください。

CMake を使用する場合:

target_sources(myapp PRIVATE objc_code.mm)

qmake を使用する場合:

SOURCES += objc_code.mm

これにより、Qtアプリケーション内でAppleのDeveloper Libraryに含まれるObjective-Cフレームワークを使用できるようになります。

すべてのソースファイルの名前を変更することなく、アプリケーションの他の部分でその機能を利用できるようにするには、ヘッダーファイルでヘルパー関数を宣言し、Objective-C++ ソースファイルでその機能を実装します:

// objc_code.h
QString localizedHostName();

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

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