BoostをVisual Studioなしでビルドする


はじめに

絶対に Visual Studio は使わんぞ と心に決めて Boost をビルドしようとしたら躓いた。
あまりメジャーなやり方ではないのか調べてもそれらしい情報が見つからなかったので、忘備録も兼ねて残しておく。

環境

  • Windows 10
  • Visual Studio 20XX のインストールはなし
  • C/C++ コンパイラは GCC(MinGW-w64)

躓きポイント:「'cl.exe' がない」

こちらの手順Windowsの場合 に従って bootstrap.bat を実行すると、以下のようなエラーが出て b2.exe の生成に失敗する。

PowerShell
> git clone --recursive git@github.com:boostorg/boost.git
> cd .\boost\
> .\bootstrap.bat

(省略)

'"cl"' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

(省略)

この cl.exe とは Visual Studio に付属する「開発者コマンドプロンプト」というものらしいが、 そんなもの持ち合わせているわけがない

ここで先ほどのビルド手順のページを見返すと、Windows 以外では bootstrap.bat ではなく bootstrap.sh を実行している。

以下のコマンドを実行します:

$ bootstrap.sh

もしかしたらと思い、興味本位で boostrap.sh 実行すると、Git Bash がシェルスクリプトを実行し、見事 b2.exe が生成された。

PowerShell
> .\bootstrap.sh
Git Bash
###
### Using 'gcc' toolset.
###
###

g++.exe (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

###
###

> g++ -x c++ -std=c++11 -O2 -s -DNDEBUG builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp execcmd.cpp execnt.cpp execunix.cpp filesys.cpp filent.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp object.cpp option.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp subst.cpp sysinfo.cpp timestamp.cpp variable.cpp w32_getreg.cpp modules/order.cpp modules/path.cpp modules/property-set.cpp modules/regex.cpp modules/sequence.cpp modules/set.cpp -o b2

Git Bash の出力をみる限り GCC を使っており、ちゃんとVisual Studio の魔の手から逃れて実行できている様子(先ほど失敗したときは Using 'vc14' toolset. と表示されていた)。

これで晴れて b2.exe を手にしたので、Boost のビルドが実行できる。

PowerShell
> .\b2.exe install -j5 --prefix=C:\Boost

--prefix= の後に Boost をインストールしたいディレクトリへのパスを指定する。自分はインクルードパスが長くなるのが嫌なので、C ドラ直下の浅いところを指定した(ディレクトリは予め作成しておく)。

超長いビルドが完了すれば、Boost のビルド完了。お疲れ様でした。

おわりに

単に自分の知識不足だが、Git Bash が代わりにシェルスクリプトを実行してくれるおかげで、 Linuxの場合での手順でもうまくいくようだ。

こうして Visual Studio とは無縁の生活が守られたのであった。おしまい。

参考記事

https://boostjp.github.io/howtobuild.html
https://qiita.com/mm_sys/items/75a31ea919daf0d26e68