我正在编写一些使用 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 吗?
谢谢你。
我想我找到了原因: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
只需注释此处的命令即可。可能其他人也会遇到同样的问题......
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