CMake encuentra Boost pero los objetivos importados no están disponibles para la versión Boost
Utilizo CMake para encontrar Boost. Se encuentra Boost, pero se eliminan los errores de CMake
Objetivos importados no disponibles para la versión Boost
Vea el error completo (de macOS) a continuación. ¿Qué estoy haciendo mal?
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)
Tu versión de CMake es demasiado antigua. Actualice CMake y funcionará.
CMake no puede detectar las dependencias entre las diferentes bibliotecas de Boost. Se han implementado explícitamente en FindBoost
.
Para cada versión de Boost, los mantenedores de CMake agregan esta información y forma parte de la próxima versión de CMake. Por lo tanto, debe asegurarse de que su versión de CMake se haya lanzado después de la versión de Boost que intenta encontrar.
Boost 1.63 requiere CMake 3.7 o posterior.
Boost 1.64 requiere CMake 3.8 o posterior.
Boost 1.65 y 1.65.1 requieren CMake 3.9.3 o posterior.
Boost 1.66 requiere CMake 3.11 o posterior.
Boost 1.67 requiere CMake 3.12 o posterior.
Boost 1.68, 1.69 requiere CMake 3.13 o posterior.
Boost 1.70 requiere CMake 3.14 o posterior.
Boost 1.71 requiere CMake 3.15.3 o posterior.
Boost 1.72 requiere CMake 3.16.2 o posterior.
Boost 1.73 requiere CMake 3.17.2 o posterior.
Boost 1.74 requiere CMake 3.19 o posterior.
Boost 1.75 requiere CMake 3.19.5 o posterior.
Boost 1.76 requiere CMake 3.20.3 o posterior.
Boost 1.77 requiere CMake 3.21.3 o posterior.
Boost 1.78 requiere CMake 3.22.2 o posterior.
Boost 1.79 requiere CMake 3.23.2 o posterior.
Boost 1.80 requiere CMake 3.24.2 o posterior.
Boost 1.81 requiere CMake 3.25.2 o posterior.
Boost 1.82 requiere CMake 3.27.0 o posterior.
Boost 1.83 requiere CMake 3.27.4 o posterior.
Boost 1.84 requiere CMake 3.28.2 o posterior.
Sin encontrarBoost
A partir de la versión 1.77, Boost proporciona una BoostConfig.cmake
versión obsoleta de FindBoost y los cambios necesarios. Usando
find_package(Boost CONFIG)
excluye el archivo FindBoost y busca solo el archivo de configuración.
Por compatibilidad, CMake seguirá proporcionando FindBoost.
Solo quería publicar la siguiente solución, ya que es mucho más fácil que actualizar CMake en los sistemas en los que estoy trabajando y donde no tengo acceso root/sudo. Establecer BOOST_INCLUDEDIR
y BOOST_LIBRARYDIR
directamente al invocar CMake.
cmake -DBOOST_INCLUDEDIR=... -DBOOST_LIBRARYDIR=... ...
Es posible que esto no funcione si Boost cambió las dependencias entre la lista codificada en el módulo que se envía con CMake y la versión de Boost que está utilizando. Le llevará 30 segundos intentarlo frente a 30 minutos instalar cmake desde la fuente.