CMake无法找到BOOST库
CMake is not able to find BOOST libraries
我尝试了如下方法:
- 配置环境变量
- 创建新版本 重新安装BOOST
-
sudo apt-get install libboost-all-dev
但仍然出现以下错误:
CMake Error at /usr/share/cmake-2.8/Modules/FindBoost.cmake:1131 (message):
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Call Stack (most recent call first):
CMakeLists.txt:147 (find_package)
CMake Error at /usr/share/cmake-2.8/Modules/FindBoost.cmake:1131 (message):
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
boost的源代码目录:/usr/local/src/boost_1_45_0
Boost库路径:"/usr/local/lib
"Boost头文件:/usr/local/include/boost
bashrc file
:
BOOST_ROOT="/usr/local/src/boost_1_45_0"
Boost_LIBRARY_DIRS="/usr/local/lib"
BOOST_INCLUDEDIR="/usr/local/src/boost_1_45_0"
如何解决这些错误?我错过什么了吗?
<标题>编辑:cmake -DCMAKE_TOOLCHAIN_FILE=$ANDTOOLCHAIN -DBOOST_ROOT=/usr/local/src/boost_1_45_0 -DBOOST_INCLUDEDIR=/usr/local/include/boost -DBOOST_LIBRARYDIR=/usr/local/lib -DPYTHON_LIBRARIES=/usr/local/lib/python2.7 -DPYTHON_INCLUDE_DIRS=/usr/include/python2.7 -DCMA-DRDK_BUILD_PYTHON_WRAPPERS=
标题>尝试使用以下库完成cmake过程:
sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev
我用这个来设置cmake在我的CMakeLists.txt
中的boost。尝试类似的操作(确保更新boost的安装路径)。
SET (BOOST_ROOT "/opt/boost/boost_1_57_0")
SET (BOOST_INCLUDEDIR "/opt/boost/boost-1.57.0/include")
SET (BOOST_LIBRARYDIR "/opt/boost/boost-1.57.0/lib")
SET (BOOST_MIN_VERSION "1.55.0")
set (Boost_NO_BOOST_CMAKE ON)
FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED)
if (NOT Boost_FOUND)
message(FATAL_ERROR "Fatal error: Boost (version >= 1.55) required.")
else()
message(STATUS "Setting up BOOST")
message(STATUS " Includes - ${Boost_INCLUDE_DIRS}")
message(STATUS " Library - ${Boost_LIBRARY_DIRS}")
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif (NOT Boost_FOUND)
这将搜索默认路径(/usr
, /usr/local
)或通过cmake变量(BOOST_ROOT
, BOOST_INCLUDEDIR
, BOOST_LIBRARYDIR
)提供的路径。
我第一次想在python (GPU版本)上安装LightGBM时遇到了同样的错误。
你可以简单地用下面的命令行修复它:
sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev
将安装boost库,您将可以继续您的安装过程。
似乎答案在评论和编辑中,但要澄清这应该适用于您:
export BUILDDIR='your path to build directory here'
export SRCDIR='your path to source dir here'
export BOOST_ROOT="/opt/boost/boost_1_57_0"
export BOOST_INCLUDE="/opt/boost/boost-1.57.0/include"
export BOOST_LIBDIR="/opt/boost/boost-1.57.0/lib"
export BOOST_OPTS="-DBOOST_ROOT=${BOOST_ROOT} -DBOOST_INCLUDEDIR=${BOOST_INCLUDE} -DBOOST_LIBRARYDIR=${BOOST_LIBDIR}"
(cd ${BUILDDIR} && cmake ${BOOST_OPTS} ${SRCDIR})
您需要将参数指定为命令行参数,或者您可以使用工具链文件,但cmake不会触及您的环境变量
我只是想指出FindBoost宏可能正在寻找更早的版本,例如,当您可能安装了1.60.0时,查找1.58.0。我建议弹出打开FindBoost宏无论它是你试图建立,并检查如果是这种情况。您可以简单地编辑它以包含您的特定版本。(这是我的问题)
谢谢Paul-g的建议。对我来说,这有点不同。
我按照https://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html
中的步骤5安装了Boost然后我在"FindBoos"中添加PATH目录。cmake",位于/usr/local/share/cmake-3.5/modules:
SET (BOOST_ROOT "../boost_1_60_0") SET (BOOST_INCLUDEDIR "../boost_1_60_0/boost") SET (BOOST_LIBRARYDIR "../boost_1_60_0/libs") SET (BOOST_MIN_VERSION "1.55.0") set (Boost_NO_BOOST_CMAKE ON)
如果你在自定义路径中安装boost,所有头文件必须在${path}/boost/.
如果你想知道为什么cmake在设置了BOOST_ROOT/BOOST_INCLUDEDIR
之后找不到请求的Boost库,你可以检查cmake install location path_to_cmake/share/cmake-xxx/Modules/FindBoost
。
cmake将在BOOST_ROOT
中找到boost/config.hpp
中的Boost_INCLUDE_DIR
。这意味着你的boost头文件必须在${path}/boost/
,任何其他格式(如${path}/boost-x.y.z
)将不适合find_package
在CMakeLists.txt。
我在一个alpine docker容器中遇到了同样的问题,我的解决方案是添加boost-dev apk库,因为libboost-dev不可用。
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 查找带有 Anaconda cmake 前缀的 boost-python3
- 尝试将 boost::stacktrace 添加到 CMake 项目时出现构建错误
- cmake boost find_depedency Config
- CMake 在 Windows 上的自定义位置上找不到 Boost
- 告诉CMake链接到自定义文件夹中的Boost
- 将 Boost 与 CMAKE 联系起来时出现问题
- Linux Mint 19 上的 CMake 3.11 无法找到静态的 Boost 库
- CMAKE中无法链接Boost
- 使用cmake错误链接boost日志
- 如何使用CMake在ubuntu上找到已安装的Boost库
- CMake 找不到请求的 Boost 库
- 在Visual Studio 2017中使用boost asio tcp与CMake
- Cmake忽略了我所有关于在boost::beast存储库中在哪里找到提升的指令
- 使用 CMake 在跨平台项目中C++包含 Boost 库
- C++ CMake 构建错误:未定义对"boost::throw_exception(std::exception const&)"的引用
- 无法在Windows中找到来自cmake的MySQL和Boost包含/库
- cmake链接了boost/cmake的多个版本的源文件的单独汇编