【问题标题】:Cannot specify BOOST_ROOT for cmake无法为 cmake 指定 BOOST_ROOT
【发布时间】:2013-06-11 02:37:12
【问题描述】:

我安装了多个版本的 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还在寻找旧版本?

【问题讨论】:

  • 请看一下:如何让 cmake 找到我的 boost 安装? stackoverflow.com/questions/3016448/…
  • @Offirmo:不幸的是,我需要在 Windows 7 上构建它。
  • 尝试运行cmake . -DBoost_DEBUG=ON 以获取有关 CMake 正在做什么的更多信息。如果在您指定的BOOST_ROOT 路径中找不到合适的 boost 版本,它将继续在系统文件夹中查找。 1.53 版本可能不适合,例如如果您将 boost 编译到共享库中,但在您的 CMakeLists.txt 中您没有指定 set(Boost_USE_STATIC_LIBS OFF)
  • @Fraser:在我的 CMakeLists.txt 文件中,我有:SET(Boost_USE_STATIC_LIBS ON)SET(Boost_USE_STATIC_RUNTIME ON)
  • @Pietro - 这只是可能出错的一个例子。如果您粘贴运行cmake . -DBoost_DEBUG=ON 的输出并提供boost 1.53 库的全名(这些名称通常会提供有关如何构建库的大量信息),则最容易调试

标签: boost cmake version environment-variables


【解决方案1】:

试试这个:

cmake -DBOOST_ROOT=path

【讨论】:

  • 你是英雄。
  • 为我工作!请注意,经过反复试验后,可能需要清理构建目录。 (我得到 CMake 错误:源目录“/my/boost/path”似乎不包含 CMakeLists.txt。在清理之前)
【解决方案2】:

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

jaor 在之前链接的问题中也提到了这一点:How can I get cmake to find my alternative boost installation?

【讨论】:

    【解决方案3】:

    如果您使用的是用于 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 会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多