我正在尝试在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,所以这可能是一个简单的修复。我只是看不到它。
答案 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
,现在它可以正常工作了。