有人知道为什么我在 macOS 上构建 boost 但没有创建 boost:: Fiber 库吗?

问题描述 投票:0回答:2

我正在编写一些使用 boost:: Fiber 作为协程的代码。该代码在 Windows 上运行良好,但是当我将其(通过 git)克隆到 macOS 时,我发现 cmake 找不到 boost:: Fiber。

在windows和macOS上,我自己构建并安装了boost,如

./boostrap.sh --with-libraries=all
(sudo) ./b2 install -a
,此外我还在Ubuntu 20.04上构建进行测试,在linux和windows上,安装后会生成lib Fiber.a或.so文件夹。但在 macOS 上却没有。

我的 MacBook Air 已完全重装仅一周。我认为 macOS 版本和 clang 版本应该非常非常接近最新。

我可以知道是否有人去过那里并弄清楚如何在 macOS 上构建 boost:: Fiber 吗?

谢谢你。

c++ macos boost build boost-fiber
2个回答
3
投票

我想我找到了原因:boost :: Fiber需要c ++ 17的一些新功能。

使用以下命令,我可以在我的 mac 上构建并安装 boost::optical(操作系统:10.15.5,gcc:Apple clang 版本 11.0.3):

./bootstrap.sh --with-libraries=all

sudo ./b2 cxxflags=-std=c++17 install -a > out.txt 2>&1

只需注释此处的命令即可。可能其他人也会遇到同样的问题......


0
投票

MacOS 上的 boost 也有类似的问题。

我试图为一个使用 boost 的项目做一个

conan install --build missing
并使用 gnu-gcc 来做(因为 apple-clang 缺少一些 c++ 的东西,比如 std::syncstream 或 std::jthread),但是发生了以下错误:

boost/1.78.0: WARN: Boost component 'fiber' is missing libraries. Try building boost with '-o boost:without_fiber'. (Option is not guaranteed to exist) 

ERROR: boost/1.78.0: Error in package_info() method, line 1970  raise ConanException(f"These libraries were expected to be built, but were not built: {non_built}")     

ConanException: These libraries were expected to be built, but were not built: {'boost_fiber'}

将 gcc 版本从 12 更改为 13 解决了该问题!

-> 上一个答案中的行“我想我找到了原因:boost:: Fiber 需要 c++17 的一些新功能”帮助我猜测问题是什么,谢谢!

(发布此回复以防其他人来这里查看 boost:: Fiber 问题)

所以,对于任何在 Mac 上构建的人,请尝试使用自制软件中的 gcc

© www.soinside.com 2019 - 2024. All rights reserved.