【发布时间】:2016-04-01 17:52:26
【问题描述】:
在过去的几天里,我一直在努力将 Boost 库包含在我的项目中。我一直在阅读和使用 Stack Overflow 上众多海报提出的建议,出于某种我不明白的原因,我仍然无法让 CMake 找到 Boost,或者如果它确实找到了 Boost,我无法编译,因为它不能找到我显然需要链接的 boost_system 库以删除系统 config() not found 错误。
我目前正在使用 GNU C++ 编译器 v4.9.3-1 的 MinGW 实现在 Windows 10 上工作
目前在我的系统上提取了 Boost:
C:\boost_1_60_0
这是我的 CMake 文件当前的样子:
cmake_minimum_required(VERSION 3.5)
project(Engine)
#SET(GCC_COVERAGE_LINK_FLAGS "-lboost_system")
message(STATUS "start running cmake...")
SET(BOOSTROOT "C:/boost_1_60_0/")
SET(BOOST_ROOT "C:/boost_1_60_0/")
SET(BOOST_LIBRARYDIR "C:/boost_1_60_0/libs/")
find_package(Boost 1.60.0 COMPONENTS system REQUIRED)
if(Boost_FOUND)
message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
message(STATUS "Boost_VERSION: ${Boost_VERSION}")
include_directories(${Boost_INCLUDE_DIRS})
add_definitions("-DHAS_BOOST")
endif()
add_executable(Engine main.cpp)
if(Boost_FOUND)
target_link_libraries(Engine ${Boost_LIBRARIES})
endif()
set(SOURCE_FILES main.cpp)
我目前遇到的错误是:
Error:Unable to find the requested Boost libraries.
Boost version: 1.60.0
Boost include path: C:/boost_1_60_0
Could not find the following Boost libraries:
boost_system
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.
** 更新 ** 这是使用 -DBoost_Debug=ON 运行 cmake 时的输出:
_boost_TEST_VERSIONS = 1.61.0;1.61;1.60.0;1.60
Boost_USE_MULTITHREADED = TRUE
Boost_USE_STATIC_LIBS =
Boost_USE_STATIC_RUNTIME =
Boost_ADDITIONAL_VERSIONS =
Boost_NO_SYSTEM_PATHS =
Declared as CMake or Environmental Variables:
BOOST_ROOT = C:/boost_1_60_0/
BOOST_INCLUDEDIR =
BOOST_LIBRARYDIR = C:/boost_1_60_0/libs/
_boost_TEST_VERSIONS = 1.61.0;1.61;1.60.0;1.60
location of version.hpp: C:/boost_1_60_0/boost/version.hpp
version.hpp reveals boost 1.60.0
guessed _boost_COMPILER = -mgw49
_boost_MULTITHREADED = -mt
_boost_RELEASE_ABI_TAG = -
_boost_DEBUG_ABI_TAG = -d
_boost_LIBRARY_SEARCH_DIRS_RELEASE = C:/boost_1_60_0/libs/;C:/boost_1_60_0//lib;C:/boost_1_60_0//stage/lib;C:/boost_1_60_0/lib;C:/boost_1_60_0/../lib;C:/boost_1_60_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib_boost_LIBRARY_SEARCH_DIRS_DEBUG = C:/boost_1_60_0/libs/;C:/boost_1_60_0//lib;C:/boost_1_60_0//stage/lib;C:/boost_1_60_0/lib;C:/boost_1_60_0/../lib;C:/boost_1_60_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib
Searching for SYSTEM_LIBRARY_RELEASE: boost_system-mgw49-mt-1_60;boost_system-mgw49-mt;boost_system-mt-1_60;boost_system-mt;boost_system
Searching for SYSTEM_LIBRARY_DEBUG: boost_system-mgw49-mt-d-1_60;boost_system-mgw49-mt-d;boost_system-mt-d-1_60;boost_system-mt-d;boost_system-mt;boost_system
提前致谢
【问题讨论】:
-
尝试使用 -DBoost_DEBUG=ON 重新运行?另外,也许你会在这里找到答案:stackoverflow.com/questions/13280823/cmake-not-finding-boost
-
我不确定在哪里设置或如何使用 -DBoost_DEBUG=ON 运行它。没关系,我想通了,在上面更新
-
尝试在 C:/boost_1_60_0/ 中搜索以“libboost_system”开头的文件并检查它是否位于 _boost_LIBRARY_SEARCH_DIRS_RELEASE 或 _boost_LIBRARY_SEARCH_DIRS_DEBUG 中?
-
我找到了一些,它们位于 C:\boost_1_60_\stage\lib 下,其余位于 C:\boost_1_60_0\bin.v2\libs\system\build\msvc-14.0\调试\链接静态\线程多