gpt4 book ai didi

c++ - 为什么用 brew 安装 fmt 和 gcc 编译器后找不到 fmt 库?

转载 作者:行者123 更新时间:2023-11-30 02:16:28 30 4
gpt4 key购买 nike

我使用的是 MACOS Mojave 版本 10.14.3,需要使用 GNU 编译器而不是 clang。

我使用 brew install gcc 安装了 gcc 编译器.然后我使用 brew install fmt 安装了 fmt 库.

我把 #include <fmt/format.h>在我的 C++ 脚本的顶部

然后我输入:

/usr/local/bin/g++-8 -O0 -g3 -Wall -c -fmessage-length=0 -std=c++17 -MMD -MP -MF"src/trail2.d" -MT"src/trail2.o" -o "src/trail2.o" "../src/trail2.cpp"

但是我得到这个错误:

fatal error: fmt/format.h: No such file or directory

当我尝试使用 boost 库时也会发生同样的情况。

我用clang的时候发现fmt和boost没有问题。

以防万一我使用面向 C/C++ 开发人员的 Eclipse IDE。版本:2018-12 (4.10.0)。

具体来说,如何让 fmt 库与我用 brew 安装的 gcc 一起工作?

我在我的 Mac 中的/usr/local/Cellar 是:

drwxr-xr-x   3 aaa  staff    96 Feb 22 22:07 gcc
drwxr-xr-x 3 aaa staff 96 Feb 23 01:58 fmt

我在我的 Mac 中的/usr/local/Cellar 是:

    lrwxr-xr-x    1 aaa  admin        29 Feb 22 22:07 c++-8 -> ../Cellar/gcc/8.2.0/bin/c++-8
lrwxr-xr-x 1 aaa admin 29 Feb 22 22:07 cpp-8 -> ../Cellar/gcc/8.2.0/bin/cpp-8
lrwxr-xr-x 1 aaa admin 29 Feb 22 22:07 g++-8 -> ../Cellar/gcc/8.2.0/bin/g++-8
lrwxr-xr-x 1 aaa admin 29 Feb 22 22:07 gcc-8 -> ../Cellar/gcc/8.2.0/bin/gcc-8

感谢高级的帮助

最佳答案

homebrew 的工作方式是将所有内容都放入

/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION

然后它为 /usr/local/bin 中的二进制文件创建链接,例如

/usr/local/bin/grep -> /usr/local/Cellar/grep/4.17/bin/grep

所以你只需要将 /usr/local/bin 放在你的 PATH 中,所有 homebrew 程序都可以按名称运行,例如grep 在上面的例子中。


它对编译做同样的事情,它将实际的头文件和库放在:

/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/include
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/lib

并且还创建链接到那些在

/usr/local/include
/usr/local/lib

因此,您的 gcc 命令将是:

g++-8 -I /usr/local/include -L /usr/local/lib -lfmt <PROGRAM.CPP> -o <PROGRAM>

您可以查看哪些文件属于您的 fmt 包以及它们所在的位置:

brew ls fmt --verbose

如果安装 pkg-config,使用:

brew install pkg-config

它将使用文件 fmt.pc 并在您键入时告诉您正确的编译开关:

pkg-config --libs --cflags fmt

示例输出

-I/usr/local/Cellar/fmt/5.3.0/include -L/usr/local/Cellar/fmt/5.3.0/lib -lfmt

这意味着您可以将 gcc 命令简化为:

g++-8 $(pkg-config --libs --cflags fmt) <PROGRAM.CPP> -o <PROGRAM>

关于c++ - 为什么用 brew 安装 fmt 和 gcc 编译器后找不到 fmt 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839414/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com