[CMake] CMake not finding boost headers

Zac Bergquist zbergquist99 at gmail.com
Mon Dec 7 13:56:20 EST 2015


It turns out I missed some important information.  I am cross compiling,
and my toolchain file sets CMAKE_FIND_ROOT_PATH_MODE_INCLUDE to ONLY. If I
change ONLY to BOTH, CMake succesfully locates the Boost headers.

I'm not sure if this is the correct solution though.  Why would setting
this to ONLY prevent CMake from searching outside CMAKE_FIND_ROOT_PATH?

On Mon, Dec 7, 2015 at 1:44 PM, Zac Bergquist <zbergquist99 at gmail.com>
wrote:

> I'm stuck on what seems like a rather simple problem.
>
> I've got this in my CMakeLists.txt
>
>     set(BOOST_INCLUDEDIR ${CMAKE_CURRENT_LIST_DIR}/boost_1_59_0)
>     set(Boost_DEBUG 1)
>     find_package(Boost 1.59.0 EXACT REQUIRED)
>
> The boost_1_59_0 I'm pointing it to contains the Boost source straight
> from the 1.59.0 release.
>
> I've tried both CMake 3.3.1 and 3.4.1.  When I run CMake, I get the
> "Unable to find the Boost header files" error.  Here's some of the debug
> output:
>
> -- [ FindBoost.cmake:551 ] _boost_TEST_VERSIONS = 1.59.0;1.59
> -- [ FindBoost.cmake:553 ] Boost_USE_MULTITHREADED = TRUE
> -- [ FindBoost.cmake:555 ] Boost_USE_STATIC_LIBS =
> -- [ FindBoost.cmake:557 ] Boost_USE_STATIC_RUNTIME =
> -- [ FindBoost.cmake:559 ] Boost_ADDITIONAL_VERSIONS =
> -- [ FindBoost.cmake:561 ] Boost_NO_SYSTEM_PATHS =
> -- [ FindBoost.cmake:613 ] Declared as CMake or Environmental Variables:
> -- [ FindBoost.cmake:615 ]   BOOST_ROOT =
> -- [ FindBoost.cmake:617 ]   BOOST_INCLUDEDIR =
> /home/user/thirdparty/boost_1_59_0
> -- [ FindBoost.cmake:619 ]   BOOST_LIBRARYDIR =
> -- [ FindBoost.cmake:621 ] _boost_TEST_VERSIONS = 1.59.0;1.59
> -- [ FindBoost.cmake:690 ] Include debugging info:
> -- [ FindBoost.cmake:692 ]   _boost_INCLUDE_SEARCH_DIRS =
> /home/user/thirdparty/boost_1_59_0;PATHS;C:/boost/include;C:/boost;/sw/local/include
> -- [ FindBoost.cmake:694 ]   _boost_PATH_SUFFIXES =
> boost-1_59_0;boost_1_59_0;boost/boost-1_59_0;boost/boost_1_59_0;boost-1_59;boost_1_59;boost/boost-1_59;boost/boost_1_59
>
> So I see that the FindBoost module picked up my BOOST_INCLUDEDIR hint.  I
> looked at the source for the FindBoost module, and it comes down to:
>
>     find_path(NAMES boost/config.hpp ...).
>
> The file exists exactly where CMake says it's looking.
>
>     $ ls -l /home/user/thirdparty/boost_1_59_0/boost/config.hpp
>     -r--r--r-- 1 user user 2188 Nov 30 16:20
> /home/user/thirdparty/boost_1_59_0/boost/config.hpp
>
> Yet CMake is still setting Boost_INCLUDE_DIR-NOTFOUND.
>
> I have tried removing boost_1_59_0 from my BOOST_INCLUDEDIR hint (since I
> saw that portion of the path in the suffixes, but it doesn't help).  The
> only way I am able to get CMake to locate the boost headers is to install
> them into a global location like /usr/local/include (which I'd like to
> avoid).
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151207/c8b88b6c/attachment.html>


More information about the CMake mailing list