IT이야기

CMake는 Boost를 찾지만 가져온 대상은 Boost 버전에서 사용할 수 없을 때

cyworld 2021. 3. 21. 08:59
반응형

CMake는 Boost를 찾지 만 가져온 대상은 Boost 버전에서 사용할 수 없습니다.


CMake를 사용하여 Boost를 찾습니다. 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)

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 이상이 필요합니다.
Boost 1.68, 1.69에는 CMake 3.13 이상이 필요합니다.
Boost 1.70에는 CMake 3.14 이상이 필요합니다.

FindBoost없이

버전 1.70부터 Boost는 BoostConfig.cmakeFindBoost와 필요한 변경 사항을 더 이상 사용하지 않는를 제공합니다 . 사용

find_package(Boost CONFIG)

FindBoost 파일을 제외하고 구성 파일 만 검색합니다. CMake 에서 FindBoost를 삭제하는 방법이 있지만 1.70 이전 버전에 대한 지원이 중단되므로 CMake는이 단계를 수행하기를 기다리고 있습니다. 그래도 이것이 향후 CMake 릴리스에서이 버전 혼란을 제거하는 방법입니다.


루트 / 수도 액세스 권한이없는 곳에서 작업중인 시스템에서 CMake를 업그레이드하는 것보다 훨씬 쉽기 때문에 다음 해결 방법을 게시하고 싶었습니다. 설정 BOOST_INCLUDEDIRBOOST_LIBRARYDIR직접 CMake를 호출 할 때.

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

Boost가 CMake와 함께 제공되는 모듈에 하드 코딩 된 목록과 사용중인 부스트 버전간에 종속성을 변경 한 경우에는 작동하지 않을 수 있습니다. 소스에서 cmake를 설치하는 데 30 초가 걸리고 30 초가 걸립니다.

참조 URL : https://stackoverflow.com/questions/42123509/cmake-finds-boost-but-the-imported-targets-not-available-for-boost-version

반응형