我在使用CMake和Boost库时遇到了一些麻烦。我有以下错误:
CMake Error at C:/Program Files (x86)/CMake
2.8/share/cmake-2.8/Modules/FindBoost.cmake:1111 (message): Unable to find the requested Boost libraries.
Boost version: 1.55.0
Boost include path: C:/local/boost_1_55_0
Could not find the following static Boost libraries:
boost_system
boost_date_time
boost_regex
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):
CMakeLists.txt:10 (find_package)
-- Configuring incomplete, errors occurred!
我在我的CMakeLists.txt中找到了我在网上找到的所有内容,但它不起作用,我不明白。 我正在使用Windows 8和Visual Studio 12,并且Boost安装在默认目录中。 (C:/本地/ boost_1_55_0)
这是我的CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project (server)
set(BOOST_ROOT "c:\\local\\boost_1_55_0")
set (Boost_USE_STATIC_LIBS ON) set (Boost_MULTITHREADED ON) set
(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.55 COMPONENTS system date_time regex REQUIRED)
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
set(SRCS main.cpp Server.cpp Client.cpp)
set(HEADERS Server.h Client.h)
include_directories(${Boost_INCLUDE_DIR})
add_executable(babel_server ${SRCS} ${HEADERS})
target_link_libraries(babel_server ${Boost_LIBRARIES})
任何人都可以帮助我吗?
由于
答案 0 :(得分:8)
我猜你的编译库不在你的BOOST_ROOT / lib /文件夹中。在这种情况下,您需要设置lib文件夹目录路径。
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib/)
或
set(BOOST_LIBRARYDIR path/to/your/lib/folder)
答案 1 :(得分:7)
我有同样的问题
使用命令
解决bjam install --prefix="<your boost install folder>" --with-system --with-date_time --with-random link=static runtime-link=shared threading=multi
答案 2 :(得分:0)
我在使用vs2017的Windows 10上,我只是添加:
"set(Boost_LIB_PREFIX "lib")
set(_boost_RELEASE_ABI_TAG ".lib")"
之前
"unset(_boost_RELEASE_NAMES)"
在FindBoost.cmake
文件中,解决了我的问题!
答案 3 :(得分:0)
将这两行放在Findboost.cmake
中可以解决此问题。
我正在使用windows 10
在visual studio 17
上。
set(Boost_LIB_PREFIX "lib")
set(_boost_RELEASE_ABI_TAG ".lib")
如果我是正确的话,FindBoost正在搜索不带.lib的文件,但是库的末尾带有.lib。
答案 4 :(得分:0)
确保为发生器选择了正确的平台。
例如,如果您的Boost是64位,并且CMake的生成器设置为Win32(Windows上的默认设置),它将无法找到这些库。每当您初次尝试配置项目时都可以设置该值,并且可以通过删除缓存来重置它。