[CMake] How to include Boost in Visual Studio cmake project

Philip Lowman philip at yhbt.com
Thu Nov 12 07:54:07 EST 2009


On Thu, Nov 12, 2009 at 5:43 AM, Martin Peter Christiansen <
martin.p.christiansen at gmail.com> wrote:

> I just tried the advise I was given, and the result was the following
>
> C:\local\workspace\RobWork\build\release>cmake -G "Visual Studio 9 2008"
> -DCMAKE_BUILD_TYPE=Release ../..
> -- RobWork version 0.4.0
> -- Build configuration: Release
> --  No Default.cmake file loaded, using default settings from
> config.cmake.template
>
> CMake Warning (dev) at CMakeLists.txt:20 (INCLUDE):
>   Policy CMP0011 is not set: Included scripts do automatic cmake_policy
> PUSH
>   and POP.  Run "cmake --help-policy CMP0011" for policy details.  Use the
>   cmake_policy command to set the policy and suppress this warning.
>   The included script
>     C:/local/workspace/RobWork/build/ProjectSetup.cmake
>   affects policy settings.  CMake is implying the NO_POLICY_SCOPE option
> for
>   compatibility, so the effects are applied to the including context.
> This warning is for project developers.  Use -Wno-dev to suppress it.
> -- RobWork ROOT dir: C:/local/workspace/RobWork
> CMake Error at C:/Programmer/CMake
> 2.8/share/cmake-2.8/Modules/FindBoost.cmake:879 (message):
>   Unable to find the requested Boost libraries.
>   Boost version: 1.39.0
>   Boost include path: C:/local/boost/include/boost-1_39
>   The following Boost libraries could not be found:
>           boost_thread
>   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):
>   build/depends.cmake:8 (FIND_PACKAGE)
>   build/RobWorkSetup.cmake:32 (INCLUDE)
>   CMakeLists.txt:36 (INCLUDE)
>
>
> When I was building boost this time, I did ran the following commands:
> - "C:\Downloads\boost_1_39_0>bjam.exe --prefix=C:\local\boost -toolset=msvs
> define="_SECURE_SCL=0" define="_HAS_ITERATOR_DEBUGGING=0" -d+2"
> - "C:\Downloads\boost_1_39_0>bjam.exe install --prefix=C:\local\boost"
>
> I removed all the old enviromental variables for boost and created the
> following variable
> -  BOOST_ROOT = C:\local\boost
>
> In "C:\local\boost\lib" I have
> - libboost_thread-vc90-mt.lib
> - libboost_thread-vc90-mt-gd-1_39.lib
> - libboost_thread-vc90-mt-gd.lib
>
> In "C:\local\boost\include\boost-1_39" I have
>  - A folder named "boost", but no subfolder or file called "boost_thread"
>
>
>
I must missing some variable or setting, but I can't figure out what...
>

Your directory structure sounds good to me.

Here are a couple of suggestions...

Check the documentation to FindBoost.cmake.  Have you specified
Boost_USE_STATIC_LIBS and Boost_USE_MULTITHREADED appropriately?  These
affect which libraries are detected and certain ones like boost_thread can't
be found if Boost_USE_MULTITHREADED is not true.

If this doesn't help, delete your build tree, then add this line prior to
calling find_package(Boost...)

set(Boost_DEBUG TRUE)

Paste the output here and the relevant portions of your CMakeLists.txt when
you call find_package(Boost...).


-- 
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20091112/24328d04/attachment.htm>


More information about the CMake mailing list