このページの内容

macOS 向け Qt

macOS 向け Qt を使用すると、Apple のMacシリーズ向けアプリケーションをビルドすることができます。

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

サポートされている構成

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

ビルド環境ターゲットプラットフォームアーキテクチャ
Xcode 16 (macOS 15 SDK) 以降macOS 14.4 以降(macOS 26 を含む)x86_64、x86_64h 、arm64

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

ビルド環境

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

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

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

動作変更の適用除外

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

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

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

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

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

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

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

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

デプロイメントターゲットを引き上げる必要があるのは、自身のコードでQtのデフォルト設定よりも新しいmacOSバージョンで追加されたAPIを使用しており、かつ実行時にそれらの使用を制限するための@available チェックを行っていない場合に限られます。

CMake を使用してデプロイメントターゲットを引き上げるには:

set(CMAKE_OSX_DEPLOYMENT_TARGET "42.0")

または、qmake を使用する場合は:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 42.0

注: Qtによって設定されたデフォルト値より、デプロイメントターゲットを低く設定 しないでください 。そうすると、バイナリがQtが想定していた動作環境よりも古いバージョンのmacOSにデプロイされた場合、実行時にクラッシュする可能性があります。

AppleプラットフォームでのSDKベースの開発に関する詳細については、Appleの開発者向けドキュメントを参照してください。

アーキテクチャ

デフォルトでは、Qtは開発マシンのアーキテクチャに合わせてビルドされます。Intel Macの場合はx86_64 、Apple Silicon Macの場合はarm64 となります。

他のアーキテクチャ向けにビルドするには、プロジェクトファイルまたはコマンドラインで CMAKE_OSX_ARCHITECTURES およびQMAKE_APPLE_DEVICE_ARCHS 変数を使用できます。これにより、異なるアーキテクチャへのクロスコンパイルや、ユニバーサル(マルチアーキテクチャ)バイナリのビルドが可能になります。たとえば、CMake を使用してアプリケーションをx86_64 とarm64 の両方でビルドするには、次のようにします:

cmake ~/src/myapp -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"

または qmake を使用する場合は:

qmake ~/src/myapp QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"

プロジェクトファイルでアーキテクチャを指定する際は、引用符で囲まないでください。例:

TEMPLATE = app
SOURCES = main.cpp
QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64

Intel Mac におけるサブアーキテクチャのサポート

ベースラインのx86_64 アーキテクチャに加え、Qtはx86_64h (「Haswell」)サブアーキテクチャもサポートしており、これによりIntel Macでのパフォーマンスが向上します。

はじめに

Xcodeのインストール

macOS向けQtでの開発には、Xcodeが必要です。XcodeはApp Storeからインストールするか、Appleの開発者向けウェブサイトからダウンロードできます。

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

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

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

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

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

Qtのインストールまたはビルド

Qtをインストールまたはビルドするには、Qtの一般的な入門ガイドに従ってください。

また、Homebrew から Qtをインストールする方法については、「macOS 向けの Qt の代替インストール方法」を参照してください。

Xcodeプロジェクトファイルの生成

デフォルトでは、CMake および qmake は Makefile 形式のプロジェクトファイルを生成します。Xcode 内でアプリケーションをビルドおよびデバッグしたい場合は、代わりに Xcode プロジェクトを生成するように指定できます:

cmake ~/src/myapp -GXcode

または、qmake を使用する場合は:

qmake ~/src/myapp -spec macx-xcode

macOS へのアプリケーションのデプロイ

macOSアプリケーションは通常、自己完結型のアプリケーションバンドルとして配布されます。アプリケーションバンドルには、アプリケーションの実行ファイルに加え、Qtライブラリ、プラグイン、翻訳、その他必要となるリソースなどの依存関係が含まれています。Qtのようなサードパーティ製ライブラリは通常、システム全体にインストールされることはなく、各アプリケーションが独自のコピーを提供します。

CMake を使用してアプリケーションをアプリケーションバンドルとしてビルドするには、実行可能ファイルターゲットの MACOSX_BUNDLE プロパティを次のように設定します:

qt_add_executable(MyApp)
if(APPLE)
    set_target_properties(MyApp PROPERTIES MACOSX_BUNDLE TRUE)
endif()

qmake では、バンドルがデフォルト設定となっています。これを無効にするには、プロジェクトファイル(.pro )で `CONFIG -= app_bundle ` を設定してください。

アプリケーションを配布する一般的な方法として、ユーザーがFinderでマウントできる圧縮ディスクイメージ(.dmgファイル)を提供する方法があります。デプロイメントツールであるmacdeployqt (macOSインストーラから入手可能)を使用すると、自己完結型のバンドルを作成できるほか、必要に応じて.dmgアーカイブも作成できます。

アプリケーションは、Mac App Store を通じて配布することもできます。macdeployqt (bin/macdeployqt) は、App Store への展開の起点として使用できます。Qt が App Store のサンドボックス規則に準拠するようにするには、-feature-appstore-compliant 引数を指定して Qt を設定する必要があります。

macOS でのデプロイの詳細については、「Qt for macOS - デプロイ」を参照してください。

注: macOS App Store でアプリケーションを販売する場合 、特別なルールが適用されます。検証を通過するためには、アプリケーションはコードを実行する前に、有効なレシートが存在することを確認する必要があります。これはコピー防止の仕組みであるため、一般的なパターンを避け、レシートを検証するコードを可能な限り難読化する措置を講じる必要があります。 したがって、これは Qt によって自動化することはできず、アプリケーション自体のために特別に記述されたプラットフォーム固有のコードが必要となります。詳細については、Apple のドキュメントを参照してください。

以下のトピックでは、macOS 向け 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の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.