ビルドできないのはClang 17のせいかも?Xcode 16.3に要注意

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

昨日、MacPortsでMySQL 8.4.2をインストールしていたところ、何故か急にビルドできなくなっている事に気がつきました。

最近まで特に問題なくビルドできていたので、Portfileのビルド設定が変更されたのかと思い、AIの助けもかりつついろいろ調べてみたのですが、どうやっても解決しません。

C++のテンプレート関連のエラーを抑制するフラグを追加したり、Portfileを過去のリビジョンに戻してみたりしても解決せず、散々回り道した結果、最終的にはXcode 16.3でClang 17が導入されていたのが原因だということがわかりました。

Xcode clang version recordによると、Xcode 16.2までは「Apple clang version 16.0.0」なのですが、先日公開されたXcode 16.3から「Apple clang version 17.0.0」となっているのです。

以下この問題の回避策を紹介します。

Command Line Toolsを使用して回避

macOSではビルドに使われるツールは、XcodeあるいはCommand Line Toolsによって導入されます。このため、XcodeあるいCommandLineToolsのどちらかを16.2(Clang 16)に戻せば、従来の環境に戻り、ビルドエラーが発生しないことが期待できます。

今回はXcodeは16.3のままにして、Command Line Tools for Xcode 16.2を導入することにしました。 古いCommand Line Toolsは、以下のページの「Additional tools」からダウンロードすることができます。

念のため既存のCommand Line Toolsを削除しておきます。

sudo rm -rf /Library/Developer/CommandLineTools

Command Line Tools for Xcode 16.2をインストールします。ダウンロードしたdmgファイルの中に含まれている「Command Line Tools.pkg」を実行します。

インストール後、「xcode-select -s パス」でを実行します。

xcode-select -s /Library/Developer/CommandLineTools

「clang --version」を実行し、次のように表示されれば成功です。

$ clang --version
Apple clang version 16.0.0 (clang-1600.0.26.6)
Target: arm64-apple-darwin24.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

この後以下のコマンドでmysql8をインストールすることができました。

sudo port clean mysql8
sudo port install mysql8

まとめ

Xcode 16.3ではClang 17が導入されており、ソフトウェアのビルドが失敗する可能性があります。上流で対応されるまでXcode 16.2やCommand Line Tools for Xcode 16.2を使用する事で問題を回避することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!