CMake找不到boost [英] CMake doesn't find boost

查看:6084
本文介绍了CMake找不到boost的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Windows 7. 64位。 CMake 2.8.10。

Windows 7. 64bit. CMake 2.8.10.

步骤:

  • download boost: http://sourceforge.net/projects/boost/files/boost/1.51.0/
  • put it to C:\work\lib\boost_1_51_0-MT
  • open "Start->All Programs->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio Command Prompt (2010)"
  • command:  

cd C:\work\lib\boost_1_51_0-MT
bootstrap.bat
bjam --toolset=msvc-10.0 --variant=release --build-type=complete -j 4 --with-regex --with-test --with-filesystem --with-date_time --with-random --with-system --with-thread --with-program_options --with-chrono --with-math stage link=static threading=multi runtime-link=static




  • 命令:

  • 
    set BOOST_ROOT=C:\work\lib\boost_1_51_0-MT
    cmake M:\project
    
      Unable to find the requested Boost libraries.
    
      Boost version: 1.51.0
    
      Boost include path: C:/work/lib/boost_1_51_0-MT
    
      The following Boost libraries could not be found:
    
              boost_system
              boost_thread
              boost_random
              boost_chrono
    
      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.
    

    M:\project\CMakeLists.txt包含:(我需要静态链接boost)

    M:\project\CMakeLists.txt contains: (i need to link boost statically)

    
    ...
    set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON)
    set(USE_STATIC_BOOST ON)
    add_definitions(-DBOOST_THREAD_USE_LIB)
    add_definitions(-DBOOST_ALL_NO_LIB)
    
    find_package(Boost 1.48.0 COMPONENTS system thread random chrono REQUIRED)
    ...
    

    这个CMakeLists.txt是旧的,并且在其他增压安装(由我,而不是我在过去,但接收丢失)。

    This CMakeLists.txt is old and works on other boost installations (done by me and not me in past, but the recepies is lost).

    已解决

    Solved

    
    set(Boost_USE_STATIC_LIBS ON)
    


    b $ b

    ...现在CMake发现boost库!虽然我的set(USE_STATIC_BOOST ON)必须具有相同的效果,但它不会...

    ...now CMake finds boost libraries! Although my "set(USE_STATIC_BOOST ON)" must have the same effect, but it doesnt...

    推荐答案

    
    set(Boost_USE_STATIC_LIBS ON)
    

    ...现在CMake发现boost库!虽然我的CMakeLists.txt有设置(USE_STATIC_BOOST ON),它必须有相同的效果,但它不... ...

    ...now CMake finds boost libraries! Although my CMakeLists.txt has set(USE_STATIC_BOOST ON) which must have the same effect, but it doesnt...

    要使用 set(Boost_USE_STATIC_LIBS OFF),您需要添加:

    if( WIN32 )
      # Needed for boost to turn off autolinking for dynamic linking
      add_definitions( -DBOOST_ALL_NO_LIB )
    endif()
    

    查看更多:
    在Windows上将boost库与Boost_USE_STATIC_LIB关闭

    这篇关于CMake找不到boost的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆