MantisBT - CMake
View Issue Details
0014997CMakeModulespublic2014-06-28 03:182015-01-05 08:38
Ingvord 
 
highmajoralways
closedno change required 
cygwin 2.850 x64Windows 7 x64
CMake 2.8.11.2 
 
0014997: FindBoost can not find boost libraries installed via cygwin setup
When trying to cmake project which uses boost libraries on cygwin cmake reports "Could not find Boost". Headers are being found with out problems. Here is an output:

$> cmake .. -DBoost_DEBUG=On
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:476 ] _boost_TEST_VERSION
S = 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.
0;1.33
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:478 ] Boost_USE_MULTITHRE
ADED = TRUE
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:480 ] Boost_USE_STATIC_LI
BS =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:482 ] Boost_USE_STATIC_RU
NTIME =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:484 ] Boost_ADDITIONAL_VE
RSIONS =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:486 ] Boost_NO_SYSTEM_PAT
HS =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:538 ] Declared as CMake o
r Environmental Variables:
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:540 ] BOOST_ROOT =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:542 ] BOOST_INCLUDEDIR
=
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:544 ] BOOST_LIBRARYDIR
=
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:546 ] _boost_TEST_VERSION
S = 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.
0;1.33
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:639 ] location of version
.hpp: /usr/include/boost/version.hpp
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:663 ] version.hpp reveals
 boost 1.53.0
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:739 ] guessed _boost_COMP
ILER = -gcc48
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:749 ] _boost_MULTITHREADE
D = -mt
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:792 ] _boost_RELEASE_ABI_
TAG = -
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:794 ] _boost_DEBUG_ABI_TA
G = -d
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:842 ] _boost_LIBRARY_SEAR
CH_DIRS = /usr/include/lib;/usr/include/../lib;/usr/include/stage/lib;PATHS;C:/b
oost/lib;C:/boost;/sw/local/lib
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:1017 ] Boost_FOUND = 1
-- Boost version: 1.53.0
found GNU compiler ...
setup for release build ...
2.8.11.2
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:476 ] _boost_TEST_VERSION
S = 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
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:478 ] Boost_USE_MULTITHRE
ADED = OFF
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:480 ] Boost_USE_STATIC_LI
BS = OFF
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:482 ] Boost_USE_STATIC_RU
NTIME = OFF
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:484 ] Boost_ADDITIONAL_VE
RSIONS =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:486 ] Boost_NO_SYSTEM_PAT
HS =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:538 ] Declared as CMake o
r Environmental Variables:
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:540 ] BOOST_ROOT =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:542 ] BOOST_INCLUDEDIR
=
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:544 ] BOOST_LIBRARYDIR
=
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:546 ] _boost_TEST_VERSION
S = 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
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:639 ] location of version
.hpp: /usr/include/boost/version.hpp
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:663 ] version.hpp reveals
 boost 1.53.0
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:739 ] guessed _boost_COMP
ILER = -gcc48
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:749 ] _boost_MULTITHREADE
D =
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:792 ] _boost_RELEASE_ABI_
TAG = -
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:794 ] _boost_DEBUG_ABI_TA
G = -d
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:842 ] _boost_LIBRARY_SEAR
CH_DIRS = /usr/include/lib;/usr/include/../lib;/usr/include/stage/lib;PATHS;C:/b
oost/lib;C:/boost;/sw/local/lib
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for PROGR
AM_OPTIONS_LIBRARY_RELEASE: boost_program_options-gcc48-1_53;boost_program_optio
ns-gcc48;boost_program_options-1_53;boost_program_options;boost_program_options
cygwin warning:
  MS-DOS style path detected: C:/boost/lib64
  Preferred POSIX equivalent is: /cygdrive/c/boost/lib64
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames [^]
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for PROGR
AM_OPTIONS_LIBRARY_DEBUG: boost_program_options-gcc48-d-1_53;boost_program_optio
ns-gcc48-d;boost_program_options-d-1_53;boost_program_options-d;boost_program_op
tions;boost_program_options
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for SYSTE
M_LIBRARY_RELEASE: boost_system-gcc48-1_53;boost_system-gcc48;boost_system-1_53;
boost_system;boost_system
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for SYSTE
M_LIBRARY_DEBUG: boost_system-gcc48-d-1_53;boost_system-gcc48-d;boost_system-d-1
_53;boost_system-d;boost_system;boost_system
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for REGEX
_LIBRARY_RELEASE: boost_regex-gcc48-1_53;boost_regex-gcc48;boost_regex-1_53;boos
t_regex;boost_regex
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for REGEX
_LIBRARY_DEBUG: boost_regex-gcc48-d-1_53;boost_regex-gcc48-d;boost_regex-d-1_53;
boost_regex-d;boost_regex;boost_regex
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:1017 ] Boost_FOUND = 1
-- Could NOT find Boost
Boost version: 1.53.0
Boost include path: /usr/include
The following Boost libraries could not be found:
        boost_program_options
        boost_system
        boost_regex
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the direc
tory containing Boost libraries or BOOST_ROOT to the location of Boost.

Here is the list of boost libraries in %CYGWIN_ROOT%\lib:
C:\cygwin64\lib>ls -l | grep boost
-rwxr-xr-x 1 Ingvord None 1732 May 29 2013 libboost_atomic-mt.dll.a
-rwxr-xr-x 1 Ingvord None 61458 May 29 2013 libboost_chrono-mt.dll.a
-rwxr-xr-x 1 Ingvord None 152554 May 29 2013 libboost_date_time-mt.dll.a
-rwxr-xr-x 1 Ingvord None 131606 May 29 2013 libboost_filesystem-mt.dll.a
-rwxr-xr-x 1 Ingvord None 593878 May 29 2013 libboost_graph-mt.dll.a
-rwxr-xr-x 1 Ingvord None 321382 May 29 2013 libboost_iostreams-mt.dll.a
-rwxr-xr-x 1 Ingvord None 1404706 May 29 2013 libboost_locale-mt.dll.a
-rwxr-xr-x 1 Ingvord None 129006 May 29 2013 libboost_math_c99-mt.dll.a
-rwxr-xr-x 1 Ingvord None 138172 May 29 2013 libboost_math_c99f-mt.dll.a
-rwxr-xr-x 1 Ingvord None 805006 May 29 2013 libboost_math_tr1-mt.dll.a
-rwxr-xr-x 1 Ingvord None 809648 May 29 2013 libboost_math_tr1f-mt.dll.a
-rwxr-xr-x 1 Ingvord None 90426 May 29 2013 libboost_prg_exec_monitor-mt.dll.a
-rwxr-xr-x 1 Ingvord None 885422 May 29 2013 libboost_program_options-mt.a
-rwxr-xr-x 1 Ingvord None 13172 May 29 2013 libboost_random-mt.dll.a
-rwxr-xr-x 1 Ingvord None 1539722 May 29 2013 libboost_regex-mt.dll.a
-rwxr-xr-x 1 Ingvord None 1362342 May 29 2013 libboost_serialization-mt.dll.a
-rwxr-xr-x 1 Ingvord None 232596 May 29 2013 libboost_signals-mt.dll.a
-rwxr-xr-x 1 Ingvord None 10870 May 29 2013 libboost_system-mt.dll.a
-rwxr-xr-x 1 Ingvord None 246156 May 29 2013 libboost_thread-mt.dll.a
-rwxr-xr-x 1 Ingvord None 22186 May 29 2013 libboost_timer-mt.dll.a
-rwxr-xr-x 1 Ingvord None 1485554 May 29 2013 libboost_unit_test_framework-mt.dll.a
-rwxr-xr-x 1 Ingvord None 3386782 May 29 2013 libboost_wave-mt.dll.a
-rwxr-xr-x 1 Ingvord None 942846 May 29 2013 libboost_wserialization-mt.dll.a

Notice that when cmake finds headers it properly defines multithreading:
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:478 ] Boost_USE_MULTITHREADED = TRUE

later on it does not:
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:749 ] _boost_MULTITHREADED =

If I manually change boost library file names to libboost_<whatever>.a, i.e. remove -mt.dll then this problem is gone. So temporary created a number of symlinks, which is not quite nice, I guess.
install cygwin's compilers, boost libraries and cmake
try to cmake any project depends on boost
No tags attached.
Issue History
2014-06-28 03:18IngvordNew Issue
2014-06-28 03:36IngvordNote Added: 0036285
2014-06-28 04:22IngvordNote Added: 0036286
2014-06-28 08:46IngvordNote Added: 0036287
2014-06-30 15:17Brad KingNote Added: 0036291
2014-06-30 15:17Brad KingStatusnew => resolved
2014-06-30 15:17Brad KingResolutionopen => no change required
2015-01-05 08:38Robert MaynardNote Added: 0037575
2015-01-05 08:38Robert MaynardStatusresolved => closed

Notes
(0036285)
Ingvord   
2014-06-28 03:36   
Just to clarify:

boost library files are in /lib directory of cygwin, i.e. c:\cygwin64\lib

running cmake with BOOST_LIBRARYDIR:
BOOST_LIBRARYDIR=/lib cmake .. -DBoost_DEBUG=on

adds /lib to the _boost_LIBRARY_SEARCH_DIRS but does not solve the problem
(0036286)
Ingvord   
2014-06-28 04:22   
I am wrong that renaming boost library files solves the issue. it solves it partially - cmake finds the libraries, but then make fails:

$> make
...
make[2]: *** No rule to make target '/usr/lib/libboost_program_options.a', needed by 'src/cygpnicore-2.dll'. Stop.
CMakeFiles/Makefile2:1162: recipe for target 'src/CMakeFiles/pnicore.dir/all' failed
make[1]: *** [src/CMakeFiles/pnicore.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
make: *** [all] Error 2

'/usr/lib/libboost_program_options.a' file exists:
$ ls -al /usr/lib/libboost_program_options.a
lrwxrwxrwx 1 Ingvord None 38 Jun 28 08:04 /usr/lib/libboost_program_options.a ->
 /lib/libboost_program_options-mt.dll.a
(0036287)
Ingvord   
2014-06-28 08:46   
Finally got it!

The problem indeed was with this Boost_USE_MULTITHREADED param. In one of the CMakeLists files it was set to OFF, i.e. set(Boost_USE_MULTITHREADED OFF)

Passing ON value through command line gave no result. But after changing the mentioned CMakeLists file cmake has found the libraries.
(0036291)
Brad King   
2014-06-30 15:17   
Re 0014997:0036287: Okay. AFAICT there is no bug in CMake here.
(0037575)
Robert Maynard   
2015-01-05 08:38   
Closing resolved issues that have not been updated in more than 4 months.