c++ - Cmake 中的 Boost 文件系统版本错误

标签 c++ boost cmake conan boost-filesystem

我正在开发一个 c++ 程序,该程序使用 cmake 和 conan 进行编译,并 boost 1.7.4。最近,我开始收到:错误:#error Compiling Filesystem version 3 file with BOOST_FILESYSTEM_VERSION defined != 3.

该程序直到最近都运行良好,现在才开始出现此错误。

这是我的cmake代码

#find external libraries with Conan
 ----------------------------------------------------------
conan_check(VERSION 1.0.0 REQUIRED)
message(STATUS "Downloading dependency libraries with Conan")

 #The boost dependency is tricky.
 #Need 1.74 for correct behavior, and need options to successfully build on mac
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
     #workaround for https://github.com/conan-io/conan-center-index/issues/4097
    set(CONAN_OPTIONS boost:without_fiber=True boost:without_nowide=True)
else()
    set(CONAN_OPTIONS )
endif()

conan_cmake_run(REQUIRES boost/1.74.0 jsoncpp/[>=1.8.4] eigen/[>=3.3.7] cgal/[>=5.1]
    OPTIONS
        ${CONAN_OPTIONS}
    BUILD missing
    CMAKE_TARGETS
    BASIC_SETUP
    UPDATE)

我相信 boost 1.7.4 只支持文件系统 v3,有没有办法检查我的 Boost 文件系统版本?任何可能的修复将不胜感激。

最佳答案

我们遇到了同样的问题。我通过添加(本地)修复了它

'boost:filesystem_version = 3'

到我们的 conanfile.py 的默认选项{}。看起来最近对食谱的更改是罪魁祸首:https://github.com/conan-io/conan-center-index/pull/11988

关于c++ - Cmake 中的 Boost 文件系统版本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73392648/

相关文章:

c++ - 获取数字的小数部分

c++ - Boost Log 的普通记录器的 "lazy evaluation"是如何工作的?

boost - 指定多线程时,BJam 未编译带有 '-mt' 标记的 boost 库

c++ - 在 Windows 上编译 qml-material 时出错

C++11:非平凡的线程局部静态变量?

c++ - 无符号整数减法的编译器警告(或静态分析)?

c++ - 带有 try-catch-rethrow 的代码是否等同于不带 try-catch 的代码?

c++ - 具有相同简单改编结构属性的 boost::spirit::qi 规则会产生编译错误

CMake - 找不到文件

c - 如何让 CMake/CTest memcheck 在失败时以状态码 1 退出?