【问题标题】:How to set boost to a different version?如何将 boost 设置为不同的版本?
【发布时间】:2019-08-09 18:18:03
【问题描述】:

我一直在使用 Boost 1.70.0,直到我意识到 CMake 存在问题并且无法编译。然后我切换到在我的 Linux 容器上完美编译的 Boost 1.67.0。问题是我的开发机器在 Windows 上运行(不幸的是),当我尝试切换到 1.67.0 时,CMake 继续在 1.70.0 的文件夹中搜索 Boost。

我一开始尝试让 CMake 查找 boost 的确切版本,如下所示:

find_package(Boost 1.67 EXACT)
find_package(Boost 1.67 EXACT REQUIRED COMPONENTS thread)

但我从错误中看到它仍在查看原始 1.70.0 位置:

CMake Error at C:/Program Files/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find Boost: Found unsuitable version "0.0.0", but required is
  exact version "1.67" (found C:/Program Files/boost_1_70_0)

所以我删除了那个文件夹,我得到了同样的错误信息。我尝试使用命令将 BOOST_ROOT 环境变量设置为 1.67.0 文件夹

setx BOOST_ROOT "C:/Program Files/boost_1_67_0"

但我仍然遇到同样的错误。

如何让 CMake 或我的系统忘记 boost 1.70.0 并识别 boost 1.67.0?

【问题讨论】:

  • 在重新运行 CMake 之前是否清理了 CMake 缓存?

标签: c++ boost cmake


【解决方案1】:

在我们的CMakeList.txt 文件中将变量BOOST_ROOT 设置为您想要的boost 版本的路径,例如。 g.:

if(MSVC_VERSION EQUAL 1900)
    set(MSVC_VERSION_STRING "vs2015")
    set(MSVC_VERSION_YEAR "2015")
elseif(MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS_EQUAL 1919)
    set(MSVC_VERSION_STRING "vs2017")
    set(MSVC_VERSION_YEAR "2017")
else()
    message(${MSVC_VERSION})
    message("Please switch to Visual Studio 14 2015 or Visual Studio 15 2017.")
    return()
endif()

find_path(BOOST_ROOT NAMES boost/version.hpp HINTS "C:\\thirdparty\\${MSVC_VERSION_STRING}\\x64\\boost_1_67_0")

# [... more cmake stuff ..]

 find_package(Boost 1.67.0 COMPONENTS log signals system filesystem python3 REQUIRED)

您可以在批处理脚本中调用 CMake,而不是将路径放在 CMakeLists.txt 文件中 e。 G。 setup.cmd这边:

cmake.exe ^
-G "Visual Studio 15 2017 Win64" ^
-HC:\your_project ^
-BC:\build\your_project ^
-DBOOST_ROOT=C:\thirdparty\vs2017\x64\boost_1_67_0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2020-01-14
    • 2013-11-08
    • 2022-01-10
    相关资源
    最近更新 更多