我正在尝试使用CMake配置一个项目,但它无法找到Boost库,即使它们在指定的文件夹中。我已经指定了Boost_INCLUDE_DIR
、Boost_LIBRARYDIR
和BOOST_ROOT
,但是我仍然得到一个错误消息,说CMake无法找到Boost。这种错误的原因可能是什么?
发布于 2012-01-07 22:00:39
通过阅读FindBoost.cmake
文件本身,可以获得更多帮助。它位于您的“模块”目录中。
set(Boost_DEBUG 1)
是一个很好的开始--这将显示大量关于boost在哪里寻找的信息,它正在寻找什么,并有助于解释为什么它找不到它。
它还可以帮助你找出它是否在你的BOOST_ROOT
上正确地拾取。
如果boost的确切版本未在可用版本变量中列出,FindBoost.cmake
有时也会出现问题。你可以通过阅读FindBoost.cmake
找到更多关于这方面的信息。
最后,FindBoost.cmake
在过去也有一些bug。您可以尝试的一件事是从最新版本的CMake中取出较新版本的FindBoost.cmake
,并将其与CMakeLists.txt
放在您的项目文件夹中-这样即使您有旧版本的boost,它也会使用您的项目文件夹中的新版本的FindBoost.cmake
。
祝好运。
发布于 2020-11-21 17:55:12
对我来说,这个错误很简单,因为在ubuntu上没有安装boost:
sudo apt install build-essential libboost-system-dev libboost-thread-dev libboost-program-options-dev libboost-test-dev
发布于 2016-01-06 04:48:37
我自己也在这个问题上挣扎了一段时间。事实证明,cmake
使用Boost的命名约定来查找Boost库文件,在该约定中,库名称是用于构建它的编译器版本的函数。我们的Boost库是使用GCC 4.9.1
构建的,并且该编译器版本实际上存在于我们的系统中;但是,GCC 4.4.7
也恰好被安装了。碰巧的是,cmake的FindBoost.cmake
脚本正在自动检测GCC 4.4.7
安装,而不是GCC 4.9.1
安装,因此正在查找文件名中包含"gcc44
“而不是"gcc49
”的Boost库文件。
简单的修复方法是通过在CMakeLists.txt
中将Boost_COMPILER
设置为"-gcc49
“,强制cmake假设存在GCC 4.9。通过此更改,FindBoost.cmake
查找并找到了我的Boost库文件。
https://stackoverflow.com/questions/3808775
复制相似问题