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 向けビルドは壊れがちであるというような記事も見つかる。
しかし、公式リポジトリの最近のリリースではCIが通っていて、XCFramework のビルドは通っているようなのである。
しかも 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