web-dev-qa-db-ja.com

CMakeはBoostを検出しますが、インポートされたターゲットはBoostバージョンでは使用できません

CMakeを使用してBoostを見つけます。ブーストは見つかりましたが、CMakeはエラーを出します

インポートされたターゲットはBoostバージョンでは使用できません

以下の完全なエラー(macOSから)を参照してください。私は何を間違えていますか?

CMake Warning at /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:743 (message):
  Imported targets not available for Boost version 106300
Call Stack (most recent call first):
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
/Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:6 (find_package)

Boost version: 1.63.0
Found the following Boost libraries:
  thread
CMake Warning at /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:743 (message):
  Imported targets not available for Boost version 106300
Call Stack (most recent call first):
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:7 (find_package)
51
Sounak

CMakeバージョンが古すぎます。 CMakeを更新すると動作します。

CMakeは、異なるBoostライブラリ間の依存関係を検出できません。 FindBoostに明示的に実装されています。
Boostリリースごとに、この情報はCMakeメンテナーによって追加され、次のCMakeリリースの一部になります。したがって、CMakeバージョンが、見つけようとしているBoostバージョンの後にリリースされたことを確認する必要があります。

Boost 1.63にはCMake 3.7以降が必要です。
Boost 1.64にはCMake 3.8以降が必要です。
Boost 1.65および1.65.1では、CMake 3.9.3以降が必要です。
Boost 1.66にはCMake 3.11以降が必要です。
Boost 1.67にはCMake 3.12以降が必要です。
ブースト1.68、1.69にはCMake 3.13以降が必要です。
Boost 1.70にはCMake 3.14以降が必要です。

FindBoostなし

バージョン1.70以降、BoostはFindBoostと必要な変更を廃止するBoostConfig.cmakeを提供します。を使用して

find_package(Boost CONFIG)

findBoostファイルを除外し、構成ファイルのみを検索します。 CMakeからFindBoostを削除することはありますが 、しかし1.70より前のバージョンのサポートが壊れるので、CMakeはこのステップを実行するのを待っています。それでも、これは将来のCMakeリリースでこのバージョンの混乱を取り除く方法です。

99
usr1234567

ルート/ Sudoアクセスがない作業中のシステムでCMakeをアップグレードするよりもはるかに簡単なので、次の回避策を投稿したかっただけです。 CMakeを呼び出すときに、BOOST_INCLUDEDIRBOOST_LIBRARYDIRを直接設定します。

cmake  -DBOOST_INCLUDEDIR=... -DBOOST_LIBRARYDIR=... ...

BoostがCMakeに同梱されているモジュールにハードコーディングされたリストと使用しているBoostバージョンの依存関係を変更した場合、これは機能しない可能性があります。ソースからcmakeをインストールするのに30分かかるのに対して、試行するのに30秒かかります。

1
user2267882