CMake bootstrap は未最適化実行ファイルを生成するという罠


CMake を tarball で取得してビルドするとき、あなたはどんな手順で行いますか?

$ ./bootstrap
$ make

実はこれ、最適化されていない cmake をビルドしちゃいます。ただでさえクソ遅い CMake が激遅になってしまいます。

もしあなたがあまり古くない CMake をすでにインストールしているなら、以下のようにするのがベターですね。

$ /path/to/your/cmake -DCMAKE_BUILD_TYPE=Release .
$ make -jNN

私はもはや CMake 使いに ninja-build を活用していただきたいとばかり願っているので、以下のようにするとベストです。

$ /path/to/your/cmake -GNinja -DCMAKE_BUILD_TYPE=Release .
$ ninja

あ、CMake 初めてな人は仕方がないので ./bootstrap を利用しましょう。

$ CXXFLAGS=-O3 ./bootstrap --parallel=XX
$ make -jNN

このやり方だと stage2 ビルドの CMakeCache.txtCMAKE_CXX_FLAGS:STRING=-O3 をセットしてくれます。それがイヤならば以下のやり方もあります。

$ ./bootstrap --parallel=XX
$ Bootstrap.cmk/cmake -DCMAKE_BUILD_TYPE=Release .
$ make -jNN

なお私はよだきんぼ(方言)なので CMake を /usr/local どころか $HOME にすらインストールしません。Symlink でイケますよ。

$ ln -sv /path/to/build/cmake-X.X/bin/c*make ~/bin/

(私は ccmake も多用します)