📱

llama.cpp の XCFramework が作りたかった

に公開

llama.cpp の XCFramework を作って iOS アプリで使おうと思って llama.cpp のリポジトリ内にある build-xcframework.sh というスクリプトを実行したら、以下のエラーが出た。

Building for visionOS...
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
System is unknown to cmake, create:
Platform/visionOS to use this system, please post your config file on discourse.cmake.org so it can be added to cmake
CMake Error at CMakeLists.txt:2 (project):
  No CMAKE_C_COMPILER could be found.



CMake Error at CMakeLists.txt:2 (project):
  No CMAKE_CXX_COMPILER could be found.

何のことかわからず、エラーメッセージを見て環境変数が悪いのかとか思って試行錯誤していたが全然解決しない。

ネットで検索すると llama.cpp の iOS 向けビルドは壊れがちであるというような記事も見つかる。

https://zenn.dev/laiso/articles/c4f2c1794f17e3

しかし、公式リポジトリの最近のリリースではCIが通っていて、XCFramework のビルドは通っているようなのである。

https://github.com/ggml-org/llama.cpp/actions/runs/15792360406/job/44519925983#step:4:375

しかも CI の Xcode のバージョンはなんか古いっぽい。古いバージョンで通るなら自分の Xcode が古くて通らないとかではないはずだ。

なんか

System is unknown to cmake, create:
Platform/visionOS to use this system, please post your config file on discourse.cmake.org so it can be added to cmake

ってのが怪しい気がすると思い、直感で cmake のバージョンを上げてみた。普段 cmake なんか使わないのでかなり古いバージョンになってるはず。

% cmake --version
cmake version 3.27.4

普段 cmake を使わな過ぎてこれが古いのかどうかもわからないが、とりあえず brew upgrade cmake した。その後、、、

% cmake --version
cmake version 4.0.3

メジャーバージョンが上がった。で、もう一度スクリプトを実行してみたらビルドが通った。

結論

cmake はこまめにアップデートしよう。

でもどうせ Apple Intelligence の API が来るから llama.cpp は iOS では誰も使わなくなるんだろうなぁー

Discussion