C++ fmt 库安装不起作用

Luc*_*cas 5 permissions command-line c++ libraries

我是一个新的 C++ 用户,在我的程序中安装外部库时遇到了一些问题。目前,我正在尝试安装fmt库。我下载了存储库内容并将其解压缩。然后我将 de 子目录添加fmtusr/include/fmt,这不起作用。我也试过 add fmtto usr/local/include,也没有成功。这是一个示例代码和返回的相应错误:

#include <iostream>
#include <string>
#include <format.h> // I also tried include <fmt/format.h>

using namespace std;

int main(){
   string s = fmt::format("{0}{1}{0}", "abra", "cad");
   cout<< s<<endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:

stack.cpp:3:10: fatal error: format.h: No such file or directory
 #include <format.h>
          ^~~~~~~~~~
compilation terminated
Run Code Online (Sandbox Code Playgroud)

我注意到,在fmt我用来将其传输到以下命令后,该文件夹已“关闭”(标有“X”)usr/~

cp fmt-master/include/fmt usr/local/include/fmt
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法更改文件夹权限:

sudo chmod -rwx usr/local/include/fmt
Run Code Online (Sandbox Code Playgroud)

但即使这样也行不通。该命令在没有输出的情况下运行,fmt文件夹以 X 标记继续。我想知道 1) 将库文件夹保存在/usr/include是在 C++ 中安装外部库的标准程序吗?(对我来说它看起来太手动了)2)我在这里做错了什么?

mch*_*hid 8

大多数软件包和库不需要在 Ubuntu 上手动下载和安装。您可以libfmt-dev使用apt.

运行以下命令进行安装:

sudo add-apt-repository universe
sudo apt update
sudo apt install libfmt-dev
Run Code Online (Sandbox Code Playgroud)

Ubuntu 存储库中的大多数“构建”类型包的末尾都有“dev”后缀。10 次中有 9 次,当您需要安装一些先决条件或依赖项以使用 g++ 或 C++ 构建东西时,这些将是您需要的“lib”包。

要搜索可用的包,您可以使用apt-cache search如下示例中的命令:

apt-cache search libfmt
Run Code Online (Sandbox Code Playgroud)

如果你得到太多结果,你可以通过管道命令grep来缩小结果,如下所示:

apt-cache search libfmt | grep dev
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

apt-cache search fmt | grep 'C+'
Run Code Online (Sandbox Code Playgroud)

或者您可以使用-i标志,grep以便它不区分大小写,如下所示:

apt-cache search fmt | grep -i 'c+'
Run Code Online (Sandbox Code Playgroud)