今までBoostは1.58~1.69までしかインストールしていなかったのだが、今日1.71をビルドしてインストールした。そしてこれにハマってCMakeCache
やbuild/
ディレクトリを消してはCMakeを実行しなおすことを繰り返して10分くらい時間を無駄にした。
リンク先のコメントを訳しておこう。
- Boost <= 1.69 では、コマンドライン引数か、CMakeの
set()
か、環境変数からBOOST_ROOT
を指定することでBoostをインストールした箇所を指定できた。 - 世界は ❤🌷🌞😎👍
- Boost >= 1.70 では、"config mode"が優先され、コマンドラインまたは
set()
を使って指定した場合一切の警告なしにBOOST_ROOT
が無視される。 - ただし
config
モードでは、/opt
のような場所にインストールされているBoostも発見する。そのときは、環境変数でBOOST_ROOT
を与えていても、警告なしに上書きされる。 - 元の挙動に戻す、つまり
"config mode"
をぬけ出すには、Boost_NO_BOOST_CMAKE=ON
を設定する必要がある。 - ただし上記のオプションはコマンドライン引数または
CMakeLists.txt
内のset()
を使って指定される必要があり、環境変数で指定した場合警告なしに無視される。 "config mode"
でインストールした場所を指定するには、Boost_DIR
を使用する。- ただし上記のオプションは環境変数か
set(Boost_DIR <value> CACHE)
の形で指定される必要がある。もしコマンドライン引数や通常のset(Boost_DIR <value>)
を使用した場合、警告なしに無視される。 Boost_ROOT
というものがBOOST_ROOT
の他に存在する。- (後続コメントより)これら2つは異なる。
BOOST_ROOT
はFindBoost.cmake
が参照するもので、Boost_ROOT
はcmake
がpolicy CMP0074
で指定される挙動、<PACKAGE_NAME>_ROOT
を参照する過程で使用される。
- (後続コメントより)これら2つは異なる。
- 世界は💔🔥⛈😕👎
いや、これは結構💔🔥⛈😕👎ではないだろうか。せめてdeprecated
だと教えてほしい……。