Release の添付は配布 ZIP(ShogiBoardQ-macos.zip)のみとし、Qt ソースや関連文書を別添付しません。アプリ内のライセンス文書の準備は Qt 文書とリリース添付の方針を参照してください。
DMG には ShogiBoardQ の実行に必要なファイルだけを入れる(最小構成)。Linux 版と同様に、通常対局用の Hayanagi(USI エンジン)と詰将棋問題集は DMG の外に置き、DMG と一緒に配布 ZIP に入れる(5.2)。UI 言語は日本語・英語・中国語(簡体字・繁体字)の 4 言語で、翻訳ファイル 4 個を同梱する。
目次
1. 前提条件
| 項目 | バージョン |
|---|---|
| macOS | 12 (Monterey) 以降推奨 |
| Xcode | 14 以降(Command Line Tools 含む) |
| CMake | 3.16 以上 |
| Qt | 6.7 以上(Widgets, Charts, Network, Concurrent, Multimedia, Sql, LinguistTools) |
| C++ | C++17 対応コンパイラ |
2. 開発環境のセットアップ
2.1 Xcode Command Line Tools
xcode-select --install
2.2 Homebrew で依存ツールをインストール
brew install cmake ninja
2.3 Qt 6 のインストール
方法A: Qt Online Installer(推奨)
Qt 公式サイトからインストーラをダウンロードし、以下のコンポーネントを選択:
- Qt 6.x > macOS
- Qt 6.x > Qt Charts
- Qt 6.x > Qt Multimedia
- Developer and Designer Tools > CMake
インストール後、Qt のパスを環境変数に設定:
# ~/.zshrc に追加(Qt のインストールパスは環境に合わせて変更)
export Qt6_DIR="$HOME/Qt/6.x.x/macos/lib/cmake/Qt6"
export PATH="$HOME/Qt/6.x.x/macos/bin:$PATH"
方法B: Homebrew
brew install qt@6
Homebrew の場合、CMake が自動検出するため環境変数の設定は不要な場合が多い。
2.4 インストール確認
cmake --version # 3.16 以上
qmake --version # Qt 6.x
clang++ --version # Apple Clang
3. ビルド
通常対局用の Hayanagi はサブモジュールなので、--recurse-submodules を付けて取得する(付けないと CMake が止まる):
git clone --recurse-submodules https://github.com/hnakada123/ShogiBoardQ.git
cd ShogiBoardQ
取得済みのリポジトリでは git submodule update --init --recursive で記録された版の Hayanagi を取得する。
ビルドスクリプト(推奨)
scripts/build-macos.sh を使うと、Release ビルドからコード署名・DMG 作成まで一括実行できる:
# 通常ビルド + DMG 作成
./scripts/build-macos.sh
# Universal Binary (arm64 + x86_64) でビルド
./scripts/build-macos.sh --universal
# クリーンビルド、DMG なし
./scripts/build-macos.sh --clean --skip-dmg
# Qt ライセンス文書を準備していないときの試験用 DMG(配布には使わない)
./scripts/build-macos.sh --clean --skip-qt-licenses
# Developer ID で署名(既定はアドホック署名)
./scripts/build-macos.sh --sign-identity "Developer ID Application: Your Name (TEAMID)"
# Developer ID で署名し、DMG を公証してから ZIP を作る
export APPLE_ID="your@email.com" APPLE_TEAM_ID="TEAMID" APPLE_APP_PASSWORD="app-specific-password"
./scripts/build-macos.sh --sign-identity "Developer ID Application: Your Name (TEAMID)" --notarize
| オプション | 説明 |
|---|---|
--universal |
Universal Binary (arm64 + x86_64) をビルド |
--deployment-target VER |
最小対応 macOS バージョン(既定: 環境変数 MACOSX_DEPLOYMENT_TARGET、未設定なら 26.0) |
--sign-identity ID |
コード署名 ID(既定: - = アドホック署名)。Developer ID を指定すると Hardened Runtime とタイムスタンプを付けて署名し、DMG にも署名する |
--notarize |
DMG を Apple の公証に提出し、公証結果をステープルしてから配布 ZIP を作る。--sign-identity で Developer ID を指定し、環境変数 APPLE_ID・APPLE_TEAM_ID・APPLE_APP_PASSWORD(App 用パスワード)を設定しておく |
--skip-dmg |
DMG と配布 ZIP の作成をスキップ(.app バンドルのみ生成) |
--skip-qt-licenses |
Qt 文書の追加をスキップし、ビルド時に同梱される簡易文書(Contents/MacOS/licenses)のみにする。配布用には付けない |
--clean |
build ディレクトリを削除してからビルド |
--help |
ヘルプを表示 |
スクリプトは以下の処理を自動実行する:
- 前提ツールの存在確認(cmake, ninja, macdeployqt, codesign, vtool, python3, create-dmg)
- CMake Configure(
CMAKE_OSX_DEPLOYMENT_TARGETを指定)+ Ninja ビルド - ビルド成果物の確認(.app、実行ファイルの最小 macOS バージョン、.qm 翻訳ファイル)
- macdeployqt によるフレームワークバンドル
- 未使用の Qt 部品の削除と、Qt バイナリの arm64 化(4.4。
--universal時は arm64 化しない)+ 検証 - Qt ライセンス文書の同梱(
--skip-qt-licensesでスキップ) - バンドル全体のコード署名 +
codesign --verify --deep --strictによる検証 - create-dmg による DMG 作成(Developer ID のときは DMG にも署名)
--notarizeのとき、DMG の公証とステープル + 検証- DMG・Hayanagi・詰将棋問題集を入れた配布 ZIP(
ShogiBoardQ-macos.zip)の作成(5.2)
最小 macOS バージョンについて: デプロイメントターゲットを指定しないと、ビルドホストの macOS バージョンが最小対応バージョンになる(例: macOS 27 でビルドすると macOS 26 で起動できない)。スクリプトは既定で
26.0を指定し、ビルド後に実行ファイルのminosが一致しなければ停止する。コード署名について: macdeployqt はバイナリを書き換えるため、実行後のバンドルはリンカ署名のみの状態になり、厳格な署名検証に通らない。スクリプトは macdeployqt の後にバンドル全体を署名し直してから DMG を作成する。
macdeployqt の ERROR 表示について:
.qm: is not an object file(翻訳ファイルに otool を実行したもの)、ODBC / PostgreSQL / Mimer の SQL ドライバーの依存先が見つからないという表示、macdeployqt 自身の署名エラーが出るが、いずれも無害。これらのドライバーは次の手順で削除し、署名はスクリプトがやり直して厳格に検証する。
以下は個別のコマンドを手動で実行する場合の手順。
3.1 Release ビルド
cd /path/to/ShogiBoardQ
# Configure(Release ビルド)
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
# ビルド(並列ビルド)
cmake --build build --config Release -- -j$(sysctl -n hw.ncpu)
Ninja を使う場合(より高速):
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja -C build
3.2 ビルド成果物の確認
# .app バンドルが生成されていることを確認
ls -la build/ShogiBoardQ.app/
# バンドル内の構造を確認
find build/ShogiBoardQ.app -type f | head -20
ビルド後のバンドル構造:
ShogiBoardQ.app/
├── Contents/
│ ├── Info.plist
│ ├── MacOS/
│ │ ├── ShogiBoardQ ← 実行ファイル
│ │ ├── ShogiBoardQ_ja_JP.qm ← 日本語翻訳
│ │ ├── ShogiBoardQ_en.qm ← 英語翻訳
│ │ ├── ShogiBoardQ_zh_CN.qm ← 中国語(簡体字)翻訳
│ │ ├── ShogiBoardQ_zh_TW.qm ← 中国語(繁体字)翻訳
│ │ └── licenses/ ← ライセンス文書(簡易版)
│ └── Resources/
│ └── shogiboardq.icns ← アプリアイコン
3.3 動作確認
# ビルドしたアプリを起動
open build/ShogiBoardQ.app
4. アプリバンドルの作成
Note:
scripts/build-macos.shを使用した場合、このセクションの手順は自動実行されるため手動での実行は不要。
4.1 macdeployqt で Qt フレームワークをバンドル
ビルドしただけでは Qt の動的ライブラリがバンドルに含まれない。 macdeployqt を使って、必要な Qt フレームワークとプラグインをバンドル内にコピーする。
macdeployqt build/ShogiBoardQ.app -verbose=2
macdeployqt が自動で行う処理:
- 依存する Qt フレームワーク(QtWidgets, QtCharts, QtNetwork, QtMultimedia, QtGui, QtCore 等)を
Contents/Frameworks/にコピー - Qt プラグイン(platforms/cocoa, imageformats/svg 等)を
Contents/PlugIns/にコピー - ライブラリの
@rpathを書き換え(install_name_tool) qt.confをContents/Resources/に生成
4.2 バンドル後の構造確認
# フレームワークが正しくバンドルされているか確認
ls build/ShogiBoardQ.app/Contents/Frameworks/
# プラグインが含まれているか確認
ls build/ShogiBoardQ.app/Contents/PlugIns/
# 依存関係に外部パスが残っていないか確認
otool -L build/ShogiBoardQ.app/Contents/MacOS/ShogiBoardQ
otool の出力に /usr/local/ や /opt/homebrew/ のパスが残っている場合、バンドルが不完全。
4.3 翻訳ファイルの確認
CMake のポストビルドステップにより .qm ファイルは Contents/MacOS/ に配置される。 macdeployqt 実行後もファイルが残っていることを確認:
ls build/ShogiBoardQ.app/Contents/MacOS/*.qm # 4 個(ja_JP / en / zh_CN / zh_TW)
Qt 標準ダイアログの翻訳(qtbase_ja / qtbase_zh_CN / qtbase_zh_TW)は実行ファイルのリソースに埋め込まれるため、別ファイルは不要。
4.4 未使用の Qt 部品の削除(最小構成)
macdeployqt は種類ごとに Qt のプラグインをすべて配置し、仮想キーボードのプラグイン経由で Qt Quick / QML まで取り込む(約 187MB)。 ShogiBoardQ が使わないものを削除し、Apple Silicon 専用の配布では Qt の x86_64 部分も取り除く(約 89MB、DMG は約 50MB)。
| 削除するもの | 理由 |
|---|---|
PlugIns/platforminputcontexts/、QtQml* / QtQuick / QtVirtualKeyboard* |
仮想キーボード・QML を使わない |
PlugIns/tls/ の SecureTransport 以外、PlugIns/networkinformation/ |
通信対局の「TLS(暗号化)」は macOS 標準の Security フレームワークを使う SecureTransport バックエンドで行う(OpenSSL バックエンドは libssl の同梱が要る)。ネットワーク情報は使わない |
PlugIns/multimedia/libffmpegmediaplugin.dylib、libav* / libsw* |
駒音は macOS 標準の darwin バックエンドで再生する |
PlugIns/sqldrivers/ の SQLite 以外 |
SQLite のみ使用 |
PlugIns/imageformats/ の gif / wbmp / macheif / icns / tga / macjp2 |
SVG / ICO(アイコン)と JPEG / TIFF / WebP(盤面画像出力)のみ使用 |
C=build/ShogiBoardQ.app/Contents
rm -rf $C/PlugIns/platforminputcontexts $C/PlugIns/networkinformation \
$C/PlugIns/multimedia/libffmpegmediaplugin.dylib $C/Frameworks/libav*.dylib $C/Frameworks/libsw*.dylib \
$C/Frameworks/QtQml*.framework $C/Frameworks/QtQuick.framework $C/Frameworks/QtVirtualKeyboard*.framework
find $C/PlugIns/tls -name '*.dylib' ! -name libqsecuretransportbackend.dylib -delete
find $C/PlugIns/sqldrivers -name '*.dylib' ! -name libqsqlite.dylib -delete
for p in gif wbmp macheif icns tga macjp2; do rm -f $C/PlugIns/imageformats/libq$p.dylib; done
# Qt を arm64 のみにする(Universal Binary を配布する場合は行わない)
find $C -type f \( -perm +111 -o -name '*.dylib' \) | while read -r f; do
if lipo -archs "$f" 2>/dev/null | grep -q x86_64; then
lipo "$f" -thin arm64 -output "$f.thin" && chmod "$(stat -f %Lp "$f")" "$f.thin" && mv "$f.thin" "$f"
fi
done
残るのは Qt フレームワーク 12 個(Charts, Concurrent, Core, DBus, Gui, Multimedia, Network, OpenGL, OpenGLWidgets, Sql, Svg, Widgets)と、プラグイン 10 個(cocoa, macstyle, svgicon, darwin multimedia, sqlite, securetransport, ico / jpeg / tiff / webp)。 削除後はバンドル全体を署名し直す(6.4。アドホック署名なら codesign --force --deep --sign - build/ShogiBoardQ.app)。
起動後、読み込まれたライブラリがすべてバンドル内のものか確認する:
open build/ShogiBoardQ.app
lsof -p "$(pgrep -x ShogiBoardQ)" | grep -E '/Qt/|homebrew' # 何も表示されなければよい
5. DMG ファイルの作成
Note:
scripts/build-macos.shを使用した場合、方法B (create-dmg) で自動作成されるため手動での実行は不要。--skip-dmgオプションで DMG 作成のみスキップすることも可能。手動で作成する場合も、DMG に入れる前に 4.4 の削除と署名を済ませる。方法A は macdeployqt が DMG を直接作るため、最小構成にはならない。
方法A: macdeployqt の -dmg オプション(簡易)
macdeployqt build/ShogiBoardQ.app -dmg
build/ShogiBoardQ.dmg が生成される。シンプルだが、背景画像や Applications フォルダへのリンクはない。
方法B: create-dmg(推奨 - カスタム DMG)
ユーザーが Applications フォルダにドラッグ&ドロップできる見栄えの良い DMG を作成する。
インストール
brew install create-dmg
DMG 作成
# macdeployqt でバンドルを作成(-dmg なし)
macdeployqt build/ShogiBoardQ.app
# DMG を作成
create-dmg \
--volname "ShogiBoardQ" \
--volicon "resources/icons/shogiboardq.icns" \
--window-pos 200 120 \
--window-size 600 400 \
--icon-size 100 \
--icon "ShogiBoardQ.app" 150 190 \
--hide-extension "ShogiBoardQ.app" \
--app-drop-link 450 190 \
"ShogiBoardQ.dmg" \
"build/ShogiBoardQ.app"
オプション説明
| オプション | 説明 |
|---|---|
--volname |
マウント時のボリューム名 |
--volicon |
ボリュームアイコン |
--window-pos |
DMG ウィンドウの表示位置 (x y) |
--window-size |
DMG ウィンドウのサイズ (幅 高さ) |
--icon-size |
アイコンサイズ (px) |
--icon |
アプリアイコンの表示位置 (名前 x y) |
--hide-extension |
.app 拡張子を非表示 |
--app-drop-link |
Applications フォルダへのリンク位置 (x y) |
方法C: hdiutil(手動 - 完全制御)
# 一時ディレクトリを作成
mkdir -p dmg_staging
cp -R build/ShogiBoardQ.app dmg_staging/
ln -s /Applications dmg_staging/Applications
# DMG を作成
hdiutil create -volname "ShogiBoardQ" \
-srcfolder dmg_staging \
-ov -format UDZO \
"ShogiBoardQ.dmg"
# クリーンアップ
rm -rf dmg_staging
5.1 DMG の検証
# マウントして動作確認
hdiutil attach ShogiBoardQ.dmg
open /Volumes/ShogiBoardQ/ShogiBoardQ.app
# アンマウント
hdiutil detach /Volumes/ShogiBoardQ
5.2 配布 ZIP
スクリプトは DMG の後に、リポジトリ直下に ShogiBoardQ-macos.zip を作る。構成は Linux 版の ZIP に合わせる。
ShogiBoardQ-macos/
├── ShogiBoardQ.dmg
├── README.md ← resources/platform/README-macos.md
├── LICENSE
├── Hayanagi/
│ ├── hayanagi ← 通常対局用の USI エンジン(arm64、最小 macOS はアプリと同じ)
│ ├── book/hayanagi_book.db ← Hayanagi の定跡
│ └── README.md
└── data/tsumeshogi/
├── tsume_{3,5,7,9,11,13}ply_1000_YYYYMMDD.txt
└── README.md
- 問題集は各手数1ファイルに限る。旧版などが残っているとスクリプトは停止する。
hayanagiはbuild/Hayanagi/hayanagiをstrip -xし、アプリと同じ ID(既定はアドホック)で署名し直す。- 定跡
hayanagi_book.dbは、ビルドでbuild/Hayanagi/book/にコピーされたものをHayanagi/book/に置く。Hayanagi は作業ディレクトリのbook/から定跡を読み、ShogiBoardQ はエンジンのあるディレクトリを作業ディレクトリにして起動するので、展開したまま定跡が使われる。 - ダウンロードした
hayanagiには隔離属性が付くため、README でxattr -d com.apple.quarantine Hayanagi/hayanagiを案内している。
unzip -l ShogiBoardQ-macos.zip
# Hayanagi が応答し、定跡を読むか(ShogiBoardQ と同じく Hayanagi/ で起動する)
(cd build/ShogiBoardQ-macos/Hayanagi && (printf 'usi\nisready\nposition startpos\ngo movetime 300\n'; sleep 1.5; echo quit) | ./hayanagi | grep -E 'book|usiok|readyok|bestmove')
6. コード署名と公証
配布する場合、Apple の Gatekeeper を通過するためにコード署名と公証が必要。 公証なしでも動作するが、ダウンロードしたアプリを初回に開くと Gatekeeper の警告が表示され、利用者が許可する必要がある(6.6)。
6.1 Apple Developer Program への加入
コード署名と公証には Apple Developer Program(年額 $99)への加入が必要。
6.2 署名用証明書の取得
Xcode > Settings > Accounts から以下の証明書を作成:
- Developer ID Application — アプリ本体の署名用
- Developer ID Installer — DMG / pkg の署名用(オプション)
6.3 macdeployqt でコード署名付きバンドル
macdeployqt build/ShogiBoardQ.app \
-sign-for-notarization="Developer ID Application: Your Name (TEAMID)"
このオプションにより、macdeployqt は:
- Qt フレームワークとプラグインをバンドル
- 全フレームワーク・プラグイン・実行ファイルにコード署名
--options=runtime(Hardened Runtime)を有効化
6.4 手動でのコード署名
macdeployqt の署名オプションを使わない場合:
# バンドル内の全バイナリに再帰的に署名
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: Your Name (TEAMID)" \
--options runtime \
build/ShogiBoardQ.app
# 署名の検証
codesign --verify --deep --strict --verbose=2 build/ShogiBoardQ.app
6.5 公証 (Notarization)
スクリプトを使う場合は、--sign-identity に Developer ID を指定して --notarize を付けると、DMG を公証に提出してステープルしてから配布 ZIP を作る(3. ビルド)。公証が通らなかったときは提出 ID を表示して止まる。以下は手動で行う場合の手順。
# DMG を作成(署名済みバンドルから)
# ... (手順5の方法で DMG を作成)
# 公証に提出
xcrun notarytool submit ShogiBoardQ.dmg \
--apple-id "your@email.com" \
--team-id "TEAMID" \
--password "app-specific-password" \
--wait
# ステープル(公証結果をDMGに埋め込み)
xcrun stapler staple ShogiBoardQ.dmg
# ステープルの検証
xcrun stapler validate ShogiBoardQ.dmg
注意:
--passwordには Apple ID のパスワードではなく、App 用パスワードを使用する。
6.6 公証なしで配布する場合
公証を受けずに配布する場合、ダウンロードしたアプリは初回起動時に Gatekeeper に止められる。macOS 15 以降は Finder の右クリック → 「開く」では開けないため、利用者には以下の手順を案内する:
- アプリを開き、警告が表示されたら閉じる
- 「システム設定」→「プライバシーとセキュリティ」を開き、「このまま開く」をクリックして表示に従って許可する
または、ターミナルから Gatekeeper の隔離属性を解除(「このまま開く」が表示されない場合もこの方法を使う):
xattr -cr /Applications/ShogiBoardQ.app
7. GitHub Release での公開
7.1 タグの作成
版番号は、リリースする日にだけその日の日付に上げる(版番号とリリースの運用)。配布物を作る前に CMakeLists.txt の APP_VERSION を変えてコミットし、そのコミットから配布物を作ってから、同じコミットに同じ版番号のタグを付ける。タグには v を付けない。
git tag -a 2026.10.07 -m "ShogiBoardQ 2026.10.07"
git push origin main 2026.10.07
7.2 GitHub CLI でリリース作成
GitHub CLI (gh) を使用:
# インストール
brew install gh
# ログイン(初回のみ)
gh auth login
リリース作成とアセットのアップロード:
gh release create 2026.10.07 \
--title "ShogiBoardQ 2026.10.07" \
--notes-file RELEASE_NOTES.md \
ShogiBoardQ-macos.zip
Windows の ZIP も同時に公開する場合は、アセットを追加:
gh release create 2026.10.07 \ --title "ShogiBoardQ 2026.10.07" \ --notes-file RELEASE_NOTES.md \ ShogiBoardQ-macos.zip \ ShogiBoardQ-windows.zip
リリースノートの自動生成
リリースノートファイルを用意しない場合、GitHub が自動生成する:
gh release create 2026.10.07 \
--title "ShogiBoardQ 2026.10.07" \
--generate-notes \
ShogiBoardQ-macos.zip
既存リリースにアセットを追加
Windows 側で先にリリースを作成済みの場合、macOS の ZIP を追加:
gh release upload 2026.10.07 ShogiBoardQ-macos.zip
7.3 Web UI からリリース作成(代替)
- GitHub リポジトリ → Releases → Draft a new release
- Choose a tag → 新しいタグ(例:
2026.10.07)を入力して作成 - Release title を入力(例:
ShogiBoardQ 2026.10.07) - Description にリリースノートを記入
- Attach binaries に
ShogiBoardQ-macos.zipをドラッグ&ドロップ - Publish release をクリック
7.4 リリースノートの書き方(テンプレート)
## ShogiBoardQ 2026.10.07
### ダウンロード
| OS | ファイル |
|---|---|
| macOS | `ShogiBoardQ-macos.zip` |
| Windows (64-bit) | `ShogiBoardQ-windows.zip` |
### macOS での起動方法
1. ZIP を展開し、`ShogiBoardQ.dmg` を開く
2. ShogiBoardQ.app を Applications フォルダにドラッグ&ドロップ
3. Applications から起動
> Apple の公証を受けていないため、初回起動時に警告が表示されて開けません。
> 「システム設定」→「プライバシーとセキュリティ」で「このまま開く」をクリックすると起動できます。
### 変更点
- ...
8. トラブルシューティング
Qt が見つからない
CMake Error: Could not find a package configuration file provided by "Qt6"
Qt のインストールパスを明示的に指定する:
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$HOME/Qt/6.x.x/macos"
macdeployqt が見つからない
# Qt のインストールパスを確認
which macdeployqt
# 見つからない場合、パスを通す
export PATH="$HOME/Qt/6.x.x/macos/bin:$PATH"
# Homebrew の場合
export PATH="$(brew --prefix qt@6)/bin:$PATH"
Qt Charts が macdeployqt でバンドルされない
Qt Charts は macdeployqt が自動検出できない場合がある。手動でコピーが必要:
# バンドル漏れの確認
otool -L build/ShogiBoardQ.app/Contents/MacOS/ShogiBoardQ | grep Charts
# 手動コピー(必要な場合)
cp -R "$HOME/Qt/6.x.x/macos/lib/QtCharts.framework" \
build/ShogiBoardQ.app/Contents/Frameworks/
# install_name_tool で参照パスを修正
install_name_tool -change \
@rpath/QtCharts.framework/Versions/A/QtCharts \
@executable_path/../Frameworks/QtCharts.framework/Versions/A/QtCharts \
build/ShogiBoardQ.app/Contents/MacOS/ShogiBoardQ
初回起動時に開けない(公証なしの場合)
配布先のユーザーに以下のいずれかを案内する:
- 「システム設定」→「プライバシーとセキュリティ」で「このまま開く」をクリック(初回のみ。macOS 15 以降は Finder の右クリック → 「開く」では開けない)
xattr -cr /Applications/ShogiBoardQ.appをターミナルで実行
翻訳が読み込まれない
.qm ファイルがバンドル内に存在するか確認:
find build/ShogiBoardQ.app -name "*.qm"
Contents/MacOS/ 内に .qm ファイルがない場合、手動でコピー:
cp build/ShogiBoardQ_{ja_JP,en,zh_CN,zh_TW}.qm build/ShogiBoardQ.app/Contents/MacOS/
Universal Binary (Intel + Apple Silicon) の作成
両アーキテクチャに対応したバイナリを作成する場合:
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64"
cmake --build build --config Release
注意: Qt 自体も Universal Binary 版がインストールされている必要がある。