CMake がキョドったら -GNinja で生成した build.ninja を読め


今回もタイトルでほぼ完結なので以下駄文です。

CMake で思った通りに動く Makefile を吐けなくて困った経験はありませんか?
困ったので CMake が吐いた Makefile を覗いてみたら人間向きの読み物ではないことを知ってうなだれたり発狂したりしたことありませんか?

CMake -GNinja が吐く build.ninja (と rules.ninja) はモノリシックかつ人間にもどうにか追えるファイルフォーマットなので、困ったときは build.ninja を吐かせてエディタで追ったりしてみましょう。いろいろ謎が解けるでしょう。ついでにチューニングの素材ともなります。

なお build.ninja の例はあえてここでは挙げません。挙げてみたかったんですが Clang/LLVM の build.ninja は 20MB くらいあるし…

せっかくだからこれを機に Ninja を使いましょう。インストールめんどくさければ ~/bin にビルドツリーからの symlink でもいいんです。

厄介なバグ(CMake 関係ではない)の原因をつきとめた気晴らしに短文を書いてみました☆