CLion and Boost 1.60.0
CLion and Boost 1.60.0
在过去的几天里,我一直在努力将Boost库包含在我的项目中。我一直在阅读和使用Stack Overflow上许多海报提出的建议,出于某种原因,我不明白我仍然无法让CMake找到Boost,或者如果它找到了Boost,我就无法编译,因为它找不到我显然需要链接的Boostrongystem库来删除系统config()未找到的错误。
我目前正在使用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
提前感谢
有一些有用的标志可以帮助FindBoost查找库。
在调用find_package(Boost)
之前,请尝试设置这些变量(打开或关闭-这取决于您的升压安装)
set(Boost_LIB_PREFIX "lib" CACHE STRING "")
set(Boost_USE_MULTITHREADED ON CACHE BOOL "") # '-mt' flag
set(Boost_USE_STATIC_LIBS ON CACHE BOOL "")
set(Boost_USE_STATIC_RUNTIME ON CACHE BOOL "") # '-s' tag
set(Boost_USE_DEBUG_RUNTIME ON CACHE BOOL "") # '-g' tag
set(Boost_COMPILER "-mgw49" CACHE STRING "")
用set(Boost_DETAILED_FAILURE_MSG TRUE)
设置标志将极大地帮助您诊断
相关文章:
- SWIG and Boost::variant
- boost::lockfree::spsc_queue and boost::asio
- boost.spirit x3 move_to and list ast member
- Use boost strand and std::mutex
- boost::spirit::qi and boost::phoenix::push_back
- boost::filesystem::path.parent_path() and whitespace
- Boost mpl::vector and hana
- 为什么BOOST :: fileSystem :: path and std :: filesystem ::路径含量含
- Boost Asio and OpenSSL 1.1.0
- Difference between boost::thread and std::thread
- Boost cpp and Visual Studio 2015
- boost::range_iterator and boost::iterator_range confusion
- Natvis Visual Studio 2012 Boost Vector and Matrix
- BOOST :: simel_lock and Boost :: shared_lock for读者作者锁
- C++, TR1, Regex and Boost
- Flask, boost::python and threads
- ffmpeg and boost::asio NULL pointer
- Boost:bind and Boost::function
- Boost, Windows, and QtCreator
- CLion and Boost 1.60.0