find_package()没有检测到Windows Cmake上的提升

时间:2014-01-07 10:30:04

标签: visual-studio-2010 boost cmake

我正在使用Windows系统。我想使用CMake来使用Boost库。 我在C:\ boost_1_55_0上安装了boost 这是我的CMakeLists.txt文件

set(Boost_USE_STATIC_LIBS        ON)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
find_package(Boost 1.55.0 COMPONENTS thread)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS}) 
    LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
    add_executable (linking_with_boost main.cc sqr.cc)
    target_link_libraries(linking_with_boost ${Boost_LIBRARIES})
else()
    message(STATUS "Fail  asdasd!")
endif()

我得到了 - 不能找到Boost 输出:

$ cmake ../
-- Could NOT find Boost
-- Fail  asdasd!
-- Configuring done
-- Generating done
-- Build files have been written to: D:/ubuntu_share/programming/C++/practice/cm
ake/linking_with_boost/build_win

4 个答案:

答案 0 :(得分:12)

在Windows 7 x64上,我将Boost 1.58安装到C:\ SDKs \ boost_1_58_0。为了让cMake找到所有适当的文件,我不得不添加以下三个系统变量:

    BOOST_INCLUDEDIR    C:\SDKs\boost_1_58_0\
    BOOST_LIBRARYDIR    C:\SDKs\boost_1_58_0\lib64-msvc-12.0
    BOOST_ROOT          C:\SDKs\boost_1_58_0\boost

答案 1 :(得分:11)

除了BOOST_ROOT之外,我还必须设置BOOST_LIBRARYDIR变量才能成功。在我的例子中,这是c:\ Program Files \ boost_1_56_0 \ lib64-msvc-12.0

答案 2 :(得分:9)

在运行BOOST_ROOT之前,您需要将环境变量c:\boost_1_55_0设置为cmake。另请查看cmake --help-module FindBoost以获取更多帮助。

答案 3 :(得分:3)

我在这个问题上花了很多时间,最后通过使用FindBoost手册中列出的一些变量解决了这个问题https://cmake.org/cmake/help/v3.0/module/FindBoost.html

以下变量帮助了我:

set (Boost_DETAILED_FAILURE_MSG ON)
set (Boost_THREADAPI win32)
set (BOOST_ROOT "/boost_1_40_0")
set (Boost_LIBRARY_DIR  /boost_1_40_0/lib")
set (Boost_COMPILER "-vc")
set (Boost_USE_STATIC_RUNTIME ON)  
set (BOOST_DEBUG ON)  #<---------- Real life saver