c++ - CMake no encuentra Boost
install cgal (5)
Vi al menos 3 preguntas con el mismo título que esta pregunta. Cada uno de ellos tenía una respuesta diferente que funcionaba para el OP, pero no para mí, así que lamento repetir la pregunta ...
Estoy tratando de instalar CGAL. Describen su proceso de instalación como algo tan simple here , sección 6.1. Cuando ejecuto cmake-gui
y luego hago clic en configure
, obtengo la siguiente salida
CMake Error at D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1192 (message):
Unable to find the requested Boost libraries.
Boost version: 1.51.0
Boost include path: D:/program files/boost_1_51
The following Boost libraries could not be found:
boost_thread
boost_system
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
cmake/modules/CGAL_SetupBoost.cmake:6 (find_package)
cmake/modules/CGAL_SetupDependencies.cmake:85 (include)
CMakeLists.txt:590 (include)
Pero configuré BOOST_ROOT
, en la interfaz de usuario de cmake, a D:/program files/boost_1_51
, que existe. Y las dos bibliotecas que menciona están definitivamente instaladas. ¿Que está sucediendo aquí? ¿Que necesito hacer?
EDITAR : Se adjunta la salida cuando se ejecuta cmake -DBoost_DEBUG=ON
D:/program files/CGAL-4.1>cmake -DBoost_DEBUG=ON
== Setting paths ==
-- Build CGAL from release in directory CGAL-4.1
-- Packagenames: CGAL-4.1
== Setting paths (DONE) ==
== Generate version files ==
-- CGAL_MAJOR_VERSION=4
-- CGAL_MINOR_VERSION=1
-- CGAL_BUGFIX_VERSION=0
-- CGAL_SONAME_VERSION=10
-- CGAL_SOVERSION =10.0.0
-- CGAL_REFERENCE_CACHE_DIR=
-- Building shared libraries
-- Targetting Visual Studio 10 Win64
-- Target build enviroment supports auto-linking
-- Using VC10 compiler.
-- Generator uses intermediate configuration directory: $(Configuration)
-- USING CMake version: 2.8.10
-- System: Windows
== Generate version files (DONE) ==
== Set up flags ==
-- Build type: Release
-- USING CXXFLAGS = '' /DWIN32 /D_WINDOWS /W3 /Zm1000 /GR /EHsc -D_CRT_SECURE_NO_
DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_
WARNINGS /fp:strict /fp:except- /MD /O2 /Ob2 /D NDEBUG''
-- USING LDFLAGS = '' /STACK:10000000 /machine:x64 /INCREMENTAL:NO''
== Set up flags (DONE) ==
== Detect external libraries ==
-- External libraries supported: GMP;MPFR;ZLIB;OpenGL;LEDA;MPFI;RS;RS3;OpenNL;TA
UCS;Eigen3;BLAS;LAPACK;QGLViewer;ESBTL;Coin3D;NTL;IPE
-- Preconfiguring library: GMP ...
-- GMP has been preconfigured:
-- CGAL_UseGMP-file:
-- GMP include: D:/program files/CGAL-4.1/auxiliary/gmp/include
-- GMP libraries: D:/program files/CGAL-4.1/auxiliary/gmp/lib/libgmp-10.lib
-- GMP definitions:
-- USING GMP_VERSION = ''5.0.1''
-- Preconfiguring library: MPFR ...
-- MPFR has been preconfigured:
-- CGAL_UseMPFR-file:
-- MPFR include: D:/program files/CGAL-4.1/auxiliary/gmp/include
-- MPFR libraries: D:/program files/CGAL-4.1/auxiliary/gmp/lib/libmpfr-4.li
b
-- MPFR definitions:
-- USING MPFR_VERSION = ''3.0.0''
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:566 ] _b
oost_TEST_VERSIONS = 1.56.1;1.56.0;1.56;1.55.1;1.55.0;1.55;1.54.1;1.54.0;1.54;1.
53.1;1.53.0;1.53;1.52.1;1.52.0;1.52;1.51.1;1.51.0;1.51;1.50.1;1.50.0;1.50;1.49.1
;1.49.0;1.49;1.48.1;1.48.0;1.48;1.47.1;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.1;1.4
5.0;1.45;1.44.1;1.44.0;1.44;1.43.1;1.43.0;1.43;1.42.1;1.42.0;1.42;1.41.1;1.41.0;
1.41;1.40.1;1.40.0;1.40;1.39.1;1.39.0;1.39;1.38.1;1.38.0;1.38;1.37.1;1.37.0;1.37
;1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;
1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.0;1.45;1.44.0;1
.44;1.43.0;1.43;1.42.0;1.42;1.41.0;1.41;1.40.0;1.40;1.39.0;1.39;1.38.0;1.38;1.37
.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:568 ] Bo
ost_USE_MULTITHREADED = TRUE
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:570 ] Bo
ost_USE_STATIC_LIBS = OFF
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:572 ] Bo
ost_USE_STATIC_RUNTIME =
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:574 ] Bo
ost_ADDITIONAL_VERSIONS = 1.56.1;1.56.0;1.56;1.55.1;1.55.0;1.55;1.54.1;1.54.0;1.
54;1.53.1;1.53.0;1.53;1.52.1;1.52.0;1.52;1.51.1;1.51.0;1.51;1.50.1;1.50.0;1.50;1
.49.1;1.49.0;1.49;1.48.1;1.48.0;1.48;1.47.1;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.
1;1.45.0;1.45;1.44.1;1.44.0;1.44;1.43.1;1.43.0;1.43;1.42.1;1.42.0;1.42;1.41.1;1.
41.0;1.41;1.40.1;1.40.0;1.40;1.39.1;1.39.0;1.39;1.38.1;1.38.0;1.38;1.37.1;1.37.0
;1.37
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:576 ] Bo
ost_NO_SYSTEM_PATHS =
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:644 ] De
clared as CMake or Environmental Variables:
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:646 ]
BOOST_ROOT = D:/program files/boost_1_51/bin
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:648 ]
BOOST_INCLUDEDIR =
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:650 ]
BOOST_LIBRARYDIR =
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:652 ] _b
oost_TEST_VERSIONS = 1.56.1;1.56.0;1.56;1.55.1;1.55.0;1.55;1.54.1;1.54.0;1.54;1.
53.1;1.53.0;1.53;1.52.1;1.52.0;1.52;1.51.1;1.51.0;1.51;1.50.1;1.50.0;1.50;1.49.1
;1.49.0;1.49;1.48.1;1.48.0;1.48;1.47.1;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.1;1.4
5.0;1.45;1.44.1;1.44.0;1.44;1.43.1;1.43.0;1.43;1.42.1;1.42.0;1.42;1.41.1;1.41.0;
1.41;1.40.1;1.40.0;1.40;1.39.1;1.39.0;1.39;1.38.1;1.38.0;1.38;1.37.1;1.37.0;1.37
;1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;
1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.0;1.45;1.44.0;1
.44;1.43.0;1.43;1.42.0;1.42;1.41.0;1.41;1.40.0;1.40;1.39.0;1.39;1.38.0;1.38;1.37
.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:734 ] lo
cation of version.hpp: D:/program files/boost_1_51/boost/version.hpp
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:754 ] ve
rsion.hpp reveals boost 1.51.0
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:786 ] gu
essed _boost_COMPILER = -vc100
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:796 ] _b
oost_MULTITHREADED = -mt
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:839 ] _b
oost_RELEASE_ABI_TAG = -
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:841 ] _b
oost_DEBUG_ABI_TAG = -gd
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:884 ] _b
oost_LIBRARY_SEARCH_DIRS = D:/program files/boost_1_51/bin/lib;D:/program files/
boost_1_51/bin/stage/lib;D:/program files/boost_1_51/lib;D:/program files/boost_
1_51/../lib;D:/program files/boost_1_51/stage/lib;C:/boost/lib;C:/boost;C:/Progr
am Files (x86)/boost/boost_1_51_0/lib;C:/Program Files (x86)/boost/boost_1_51/li
b;C:/Program Files (x86)/boost/lib;C:/Program Files (x86)/boost;/sw/local/lib
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:962 ] Se
arching for THREAD_LIBRARY_RELEASE: boost_thread-vc100-mt-1_51;boost_thread-vc10
0-mt;boost_thread-mt-1_51;boost_thread-mt;boost_thread
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:994 ] Se
arching for THREAD_LIBRARY_DEBUG: boost_thread-vc100-mt-gd-1_51;boost_thread-vc1
00-mt-gd;boost_thread-mt-gd-1_51;boost_thread-mt-gd;boost_thread-mt;boost_thread
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:962 ] Se
arching for SYSTEM_LIBRARY_RELEASE: boost_system-vc100-mt-1_51;boost_system-vc10
0-mt;boost_system-mt-1_51;boost_system-mt;boost_system
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:994 ] Se
arching for SYSTEM_LIBRARY_DEBUG: boost_system-vc100-mt-gd-1_51;boost_system-vc1
00-mt-gd;boost_system-mt-gd-1_51;boost_system-mt-gd;boost_system-mt;boost_system
-- [ D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1108 ] B
oost_FOUND = FALSE
CMake Error at D:/program files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmak
e:1192 (message):
Unable to find the requested Boost libraries.
Boost version: 1.51.0
Boost include path: D:/program files/boost_1_51
The following Boost libraries could not be found:
boost_thread
boost_system
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
cmake/modules/CGAL_SetupBoost.cmake:6 (find_package)
cmake/modules/CGAL_SetupDependencies.cmake:85 (include)
CMakeLists.txt:590 (include)
-- Boost include: D:/program files/boost_1_51
-- Boost libraries:
-- Boost definitions:
-- USING BOOST_VERSION = ''1.51.0''
== Detect external libraries (DONE) ==
== Write compiler_config.h ==
== Write compiler_config.h (DONE) ==
== Generating build files ==
Configuring libCGAL
-- Requested component: MPFR
-- Requested component: GMP
libCGAL is configured
-- Sources for CGAL component library ''Core'' detected
Configuring libCGAL_Core
-- Requested component: MPFR
-- Requested component: GMP
libCGAL_Core is configured
-- Sources for CGAL component library ''ImageIO'' detected
Configuring libCGAL_ImageIO
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- OpenGL include:
-- OpenGL libraries: glu32;opengl32
-- Requested component: MPFR
-- Requested component: GMP
libCGAL_ImageIO is configured
-- NOTICE: CGAL_ImageIO needs ZLib to read compressed files. That feature will n
ot be activated.
-- Sources for CGAL component library ''Qt3'' detected
Configuring libCGAL_Qt3
-- CGAL_Qt3 needs Qt3, cannot be configured.
-- Sources for CGAL component library ''Qt4'' detected
Configuring libCGAL_Qt4
-- USING OPENGL_VERSION = ''1.1''
-- USING QT4_VERSION = ''4.8.3''
-- OpenGL include:
-- OpenGL libraries: glu32;opengl32
-- OpenGL definitions:
-- Qt4 include: D:/QT/include
-- Qt4 libraries: optimized;D:/QT/lib/qtmain.lib;debug;D:/QT/lib/qtmaind.li
b;optimized;D:/QT/lib/QtOpenGL4.lib;debug;D:/QT/lib/QtOpenGLd4.lib;optimized;D:/
QT/lib/QtGui4.lib;debug;D:/QT/lib/QtGuid4.lib;optimized;D:/QT/lib/QtCore4.lib;de
bug;D:/QT/lib/QtCored4.lib
-- Qt4 definitions: -DQT_DLL
-- moc executable: D:/QT/bin/moc.exe
-- uic executable: D:/QT/bin/uic.exe
-- Requested component: MPFR
-- Requested component: GMP
libCGAL_Qt4 is configured
-- Sources for CGAL component libraries ''CGAL;Core;ImageIO;Qt3;Qt4'' detected
== Generating build files (DONE) ==
-- Configuring incomplete, errors occurred!
CGAL utiliza las bibliotecas de impulso compartido. Por lo tanto, las bibliotecas como "libboost_thread-vc100-mt-p-1_49.lib" es una biblioteca estáticamente vinculada.
Es porque cmake (utilicé v2.8.9) no puede leer el nombre de las bibliotecas de impulso correctamente. Cuando cambié los nombres de la biblioteca boost_thread-vc100-mt-p-1_49.dll y boost_thread-vc100-mt-p-1_49.lib para boost_thread-vc100-mt-1_49.dll y boost_thread-vc100-mt-1_49 , respectivamente, arregló el problema
Hoy traté de instalar CGAL con Boost 1.57 x64 en Windows y encontré el mismo problema. Instalé boost a través de los binarios de preconstrucción y los archivos .lib que CMake busca están en la lib64-msvc-12.0
. Por lo tanto, agregar BOOST_LIBRARYDIR=.../boost_1_57_0/lib64-msvc-12.0
a las opciones de CMake fue la solución para mí.
Su salida muestra que CMake está buscando las bibliotecas en los siguientes lugares:
D:/program files/boost_1_51/bin/lib
D:/program files/boost_1_51/bin/stage/lib
D:/program files/boost_1_51/lib
D:/program files/boost_1_51/../lib
D:/program files/boost_1_51/stage/lib
C:/boost/lib
C:/boost
C:/Program Files (x86)/boost/boost_1_51_0/lib
C:/Program Files (x86)/boost/boost_1_51/lib
C:/Program Files (x86)/boost/lib
C:/Program Files (x86)/boost
/sw/local/lib
También muestra que espera que las bibliotecas sean nombradas de cierta manera. Por ejemplo, la versión de lanzamiento de Boost.Thread:
boost_thread-vc100-mt-1_51
boost_thread-vc100-mt
boost_thread-mt-1_51
boost_thread-mt
boost_thread
Si sus bibliotecas de refuerzo existen en una de las ubicaciones buscadas, entonces es probablemente el nombre de la biblioteca el problema. Puede ajustar el nombre esperado de las libs de impulso estableciendo las variables de CMake apropiadas relevantes para el módulo FindBoost
Por ejemplo, si construyes boost usando bjam con link=static threading=multi
entonces en tu CMakeLists.txt antes de find_package(Boost ...)
querrás hacer
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
o invocar cmake con -DBoost_USE_STATIC_LIBS=ON -DBoost_USE_MULTITHREADED=ON
Editar
Como @noam ha señalado en los comentarios a continuación, en este caso particular, parece que CGAL requiere las versiones compartidas (dll) de las libs de impulso; pasar -DBoost_USE_STATIC_LIBS=ON
en la línea de comando no tiene ningún efecto.
Su sistema (a través de CMAKE) no puede encontrar bibliotecas estáticas reforzadas (archivos .a). Intente incluir la ruta en el archivo CMake donde los archivos .a existen en su sistema. Por ej.
set (BOOST_LIBRARYDIR {Path_here_to_boost_Static_libraries}).
Esto funcionó para mí.
Tuve este error, pero he progresado.
Estaba usando el cmake-gui, luego marqué la casilla de verificación "Avanzado" (entre la casilla de verificación "Agrupado" y el botón "Agregar entrada"), luego marqué la casilla de verificación "CGAL_Boost_USE_STATIC_LIBS".
Es posible que deba presionar "Configurar" un tiempo adicional o dos antes de que se revelen las opciones adicionales.