无法找到所请求的Boost库Windows Cmake

时间:2016-01-15 16:25:17

标签: c++ c windows boost cmake

我正在尝试在Windows上构建Bytecoin源代码,而我遇到了CMake和Boost库的问题。首先,我尝试抓住Boost 1.55并自行编译。接近结尾的一个或两个lib由于某种原因没有编译,但我认为CMake至少会识别已​​编译的库。相反,我在尝试加载CMake项目时遇到此错误:

  

错误:无法找到请求的Boost库。提升版:   1.55.0 Boost包含路径:C:/ Program Files / boost / boost_1_55_0找不到以下Boost库:           boost_system boost_filesystem boost_thread boost_date_time boost_chrono boost_regex
  boost_serialization boost_program_options没有Boost库   被找到。您可能需要将BOOST_LIBRARYDIR设置为该目录   包含Boost库或BOOST_ROOT到Boost的位置。

然后我尝试在find_package()中添加一个HINT。它试图解析一个奇怪的路径,不知道它在做什么:

  

C:/ Program Files出现CMake错误   (x86)/CMake/share/cmake-3.4/Modules/FindBoost.cmake:273(if):语法   

中cmake代码中的错误
C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindBoost.cmake:273
     

解析字符串

${Boost_C:/PROGRAM FILES/BOOST/BOOST_1_55_0_LIBRARY_RELEASE}

阅读有关此问题的一些SO答案我添加了环境变量:

  

C:\用户\米莎>设置

     

BOOST_INCLUDEDIR = C:\本地\ boost_1_55_0   BOOST_LIBRARYDIR = C:\本地\ boost_1_55_0 \ LIB32-MSVC-12.0   BOOST_ROOT = C:\本地\ boost_1_55_0 \升压

此时我尝试使用precompiled libs,没有。

CMkeLists.txt

find_package(Boost 1.55 REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options)
#find_package(Boost 1.55 REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options HINT "C:/Program Files/boost/boost_1_55_0")
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
if (MINGW)
    set(Boost_LIBRARIES "${Boost_LIBRARIES};ws2_32;mswsock")
elseif (APPLE)
    set(Boost_LIBRARIES "${Boost_LIBRARIES}")
elseif (NOT MSVC)
    set(Boost_LIBRARIES "${Boost_LIBRARIES};rt")
endif ()

我不熟悉CMake,所以这可能是一个简单的修复。我只是看不到它。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的错误,但已解决。我的BOOST库是在Windows 7(64位)上使用Gcc 6.3构建的。

我在Boost_DEBUG on中设置了CMakeLists.txt并发现

  

-[C:/程序文件/CMake/share/cmake-3.9/Modules/FindBoost.cmake:1620]搜索   对于SYSTEM_LIBRARY_RELEASE:   libboost_system-mgw63-mt-1_67; libboost_system-mgw63-mt; libboost_system-mt-1_67; libboost_system-mt; libboost_system

这意味着FindPackage(Boost)正在搜索libboost_system-mgw63-mt-1_67,但是我的图书馆名称是libboost_system-mgw63-mt-x64-1_67

所以我从所有libray名称中删除了X64,现在它可以正常工作了。