【已解决】Ubuntu20.04安装fmt编译报错:error: no matching function for call to ‘fmt::v11::formatter的解决方法


一、安装fmt

1、在终端执行以下指令,从github克隆fmt到本地

git clone  https://github.com/fmtlib/fmt.git

2、依次执行以下指令编译安装fmt

cd fmt
mkdir build
cd build
cmake ..
make
sudo make install

在这里插入图片描述


二、相关报错及解决方法

我在执行上述过程中的make指令时产生了以下报错:

error: no matching function for call to ‘fmt::v11::formatter<fmt::v11::detail::std_string_view, char, void>::format(fmt::v11::detail::std_string_view&, fmt::v11::context&) const’
3857 | return formatter<Base, Char>::format(value, ctx);

在这里插入图片描述

   从编译日志来看,fmt 库的编译过程中出现了关于模板推导和类型转换的错误,特别是涉及 std_string_viewbasic_string_view 的问题。这可能是由于 fmt 库版本和我的编译器或依赖项不兼容,或者是某些模板推导的问题。

解决方法:更新或选择合适的 fmt 版本

   当前我编译的 fmt 库版本是 11.0.2,可能在该版本中存在一些模板相关的问题。可以尝试回退到稳定的 fmt 版本来解决该问题,例如9.1.0版本,首先,我们回到fmt文件夹下,在空白处右键,选择 在终端打开 项,然后在打开的终端下执行以下指令

git checkout 9.1.0

在这里插入图片描述

   然后重新在终端执行以下指令:

cd build
cmake ..
make

   然后就可以发现报错成功解决了

在这里插入图片描述

   然后接着按照第一部分中介绍的流程,执行完下面这行语句,就可以完成fmt的安装了

sudo make install

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44339029/article/details/142418722