🗂

macOSでopenMSX Debuggerをビルドする

2021/04/12に公開

macOS 10.15.7の環境でopenMSX Debuggerをビルドしたので手順をメモ。

環境

  • MacBook Air (13inch, Mid 2012)
  • macOS 10.15.7

事の顛末

これは軽い気持ちでopenMSX Debuggerを使ってみようとして、不注意から色々とやらかしてしまった顛末のメモ。

最終的なインストール手順は「簡単な手順」を参照。

openMSX Debuggerバイナリの起動でエラー

openMSX Debuggerは下記のページからバイナリをダウンロードできる。
https://openmsx.org
ここにちゃんと

requires separate Qt5 download

と書いてあり「はいはいQtが必要なのね」と読んだのだが…。

ダウンロードしたバイナリを起動するとエラーになってしまった。

レポートを見てみるとQtのライブラリが見つからないらしい。

Dyld Error Message:
  Library not loaded: /usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore
  Referenced from: /Users/USER/Documents/*/OpenMSX_debugger.app/Contents/MacOS/openmsx-debugger
  Reason: image not found

そう、ダウンロードリンクのところに書いてあったにもかかわらずQtを用意せずに起動してしまったのだ。

Qt のインストール

Qtはhome brewを使ってインストールすることにした。

paraches@uriel-2 ~ % brew install qt
<中略>
==> Installing qt
==> Pouring qt-6.0.3.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/qt/6.0.3: 8,233 files, 158.1MB
==> Caveats
==> dbus
To have launchd start dbus now and restart at login:
  brew services start dbus
paraches@uriel-2 ~ % 

インストールは問題なく完了。

再度openMSX Debuggerのバイナリを起動するが同じエラーになる。Qtインストールしたのになぜ見つからない?

ここで、なぜか「それならばopenMSX Debuggerをソースからビルドしてみよう」と考えてしまった。

openMSX Debugger build

前出のページからソースファイルをダウンロードして、トップのフォルダでmakeコマンド。

paraches@uriel-2 debugger-master % make
Autodetecting native system:
  Using Python 3.9.4 native system detection...
  Detected system: x86_64-darwin
build/main.mk:237: *** Qt version 6.0.3 found; please pass QMAKE pointing to Qt 5.x instead.  Stop.
paraches@uriel-2 debugger-master % 

エラーメッセージが表示される。

なるほど、home brewでインストールされたのはQt6で、必要なのはQt5だったのだ。
確かに前出のページにもちゃんとQt5と書いてある…。

Qt5 のインストール

Qt5 を再度home brewでインストール。

paraches@uriel-2 ~ % brew install qt5
<中略>
qt@5 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have qt@5 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/qt@5/bin:$PATH"' >> ~/.zshrc

For compilers to find qt@5 you may need to set:
  export LDFLAGS="-L/usr/local/opt/qt@5/lib"
  export CPPFLAGS="-I/usr/local/opt/qt@5/include"

For pkg-config to find qt@5 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig"

==> Summary
🍺  /usr/local/Cellar/qt@5/5.15.2: 10,688 files, 367.9MB
paraches@uriel-2 ~ % 

インストール完了!

再度openMSX DebuggerをmakeしてみるがやはりQt5が見つからないとエラー。

ここでQt5をインストールした時のログを確認。

qt@5 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have qt@5 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/qt@5/bin:$PATH"' >> ~/.zshrc

ちゃんと書いてある。

Qt5はkeg-onlyなので/usr/localへのリンクが作成されていない。Qt5をPATHの最初に入れるには下記のコードを.zshrcexportする。(意訳)

というわけで、とりあえずopenMSX Debuggerをビルドする間だけ.zshrcexportした。

paraches@uriel-2 ~ % echo 'export PATH="/usr/local/opt/qt@5/bin:$PATH"' >> ~/.zshrc

再度openMSXをmakeすると…ビルド完了!

openMSX Debugger 起動

derivedフォルダにopenMSX_Debuggerができているのでこれをダブルクリック。

ようやく起動!

簡単な手順

紆余曲折あって最終的には起動できた openMSX Debuggerだが、結局は下記の手順で行えば全く問題なかったはず。

バイナリの場合

  1. brew install qt5
  2. openMSX Debuggerのバイナリをダウンロード
  3. openMSX Debuggerを起動

ソースからビルドの場合

  1. brew install qt5
  2. openMSX Debuggerのソースをダウンロード
  3. make
  4. derivedフォルダのopenMSX_Debuggerをダブルクリック

教訓

今回の教訓はコレ。

はいはいQt5が必要なのね」と読んでいるにもかかわらずQtをインストールせずに起動。
更にQt5と書いてあるのに何も考えずにbrew install qtしてQt6をインストールしてQtが見つからないと慌てる。
あまつさえ「ソースからビルドしてみよう」なんて方向へ行ってしまう…。
もうダメ、全然ダメ。

今回はちょっとした不注意や面倒臭がることが更なる面倒を呼ぶパターンだった。

Discussion