【问题标题】:Set minimum version of boost in cmake在 cmake 中设置最低版本的 boost
【发布时间】:2011-12-12 21:36:35
【问题描述】:

我想定义系统上可用的最低增强版本。我尝试了以下方法。不幸的是,这不起作用,因为它也尝试在系统上仅使用 boost 1.40.0 的情况下进行编译。

SET(Boost_USE_STATIC_LIBS OFF)
SET(Boost_USE_MULTITHREAD OFF)
SET(BOOST_MIN_VERSION "1.47.0")

FIND_PACKAGE(Boost REQUIRED)

FIND_PACKAGE(Boost REQUIRED)
if (NOT Boost_FOUND)
      message(FATAL_ERROR "Fatal error: Boost (version >= 1.47.0) required.\n")
endif (NOT Boost_FOUND)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

在编译之前,我如何让 cmake 控制正确的 boost 版本?

【问题讨论】:

    标签: c++ boost cmake


    【解决方案1】:

    基于this,FIND_PACKAGE 似乎忽略了SET(BOOST_MIN_VERSION "1.47.0"),而您可以使用FIND_PACKAGE(Boost 1.47.0 REQUIRED) 或稍微好一点的FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED)

    【讨论】:

    • 感谢 FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED) 工作。
    • @tune2fs 这仅适用于次要版本。如果你有 boost 2.0(假设存在这样的东西),这将找不到它。
    • @juanchopanza 这个想法是,当 MAJOR 版本增加时,它将与版本 1.x 不兼容。因此,如果您指定 1.47.0,那么您不希望它找到 2.x(因为您的代码显然与 1.x 兼容)。
    • 请注意对 boost 有效的可能不适用于其他软件包。 Cmake 没有定义任何默认的版本兼容性/比较标准,因此每个包都必须在 ConfigVersion.cmake 中定义自己的。如果一个包提供 Config.cmake 但不提供 ConfigVersion.cmake,则 cmake 将假定任何内容,但完全匹配是不兼容的。
    猜你喜欢
    • 2016-06-03
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2018-11-10
    • 2020-06-22
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多