11

我安装了多个版本的 Boost (Windows 7/MinGW)。我需要使用一个特定的(1.53.0)。

我在 CMakeFiles.txt 文件中定义了 BOOST_ROOT: SET(BOOST_ROOT C:/boost_1_53_0/),但我不断收到此错误:

> cmake .
BOOST_ROOT=C:/boost_1_53_0/
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1191 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.48.0

  Boost include path: C:/Boost/include/boost-1_48

  Detected version of Boost is too old.  Requested version was 1.53 (or
  newer).

  The following Boost libraries could not be found:

          boost_filesystem

  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.

我还将 BOOST_ROOT 定义为环境变量,但结果相同。

为什么 cmake 还在寻找旧版本?

4

3 回答 3

23

尝试这个:

cmake -DBOOST_ROOT=path
于 2013-11-06T07:14:26.827 回答
12

我也为同样的问题苦苦挣扎了一段时间。如果这与我遇到的问题相同,那么问题是您没有在没有任何缓存的情况下完全全新地运行 CMake 配置。一旦它运行一次并找到默认安装(C:\Boost 或 /usr/include),它将继续找到那个,而不管 BOOST_ROOT 的值如何。因此,请确保完全删除任何生成的构建文件。然后将 BOOST_ROOT 设置为您想要的单独安装,它应该可以正常工作。

jaor 在之前链接的问题中也提到了这一点:如何让 cmake 找到我的替代 boost 安装?

于 2013-11-05T22:36:50.357 回答
6

如果您使用 Visual Studio 的预编译版本的 Boost 库,它们会具有特定的 MSVC 版本和位数。我需要将 CMake 指向该特定位置 - 在我的情况下,将 BOOST_ROOT 设置为 C:/local/boost_1_59_0 并将 BOOST_LIBRARYDIR 设置为 C:/local/boost_1_59_0/lib64-msvc-11.0 会有所帮助。

于 2015-10-20T22:26:27.493 回答