Open4

Reposoup: CMake File APIから情報を抽出する

okuokuokuoku

CMakeにはfile APIがあり、これを使ってプロジェクトの情報をいろいろと抽出できる。例えば、

https://cmake.org/cmake/help/latest/manual/cmake-file-api.7.html

  • ターゲットを定義した CMakeLists.txt のパスとコード内の場所 (codemodel → target)
  • CMakeが認識しているtoolchainの詳細 (toolchain)

これを今回は ファイル / ディレクトリ / ターゲット → CMake プロジェクトおよびビルドディレクトリ を引く逆引きデータベースの作成に使いたい。例えば、エディタから補完を行うためには開かれているファイルがコンパイルされる可能性があるCMakeプロジェクトを列挙し、適切なコマンドラインオプションを見出す必要がある。

okuokuokuoku

JSONファイルの収集

各クエリ毎に生成されるindexと他のファイルでは命名規則が異なる。

Indexは index-2025-04-26T06-11-05-0730.json のように、日付がサフィックスされる。それ以外のデータは target-mbedtls-cbc40d1a7365aaff5786.json のように内容のハッシュがサフィックスされる。ただしこれらのサフィックスの内容は CMake的には仕様ではないという立場 になっている。

ファイルのパスは常に .cmake/api/v1/reply/ 以下となる。