5

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

我使用brew install gcc. 然后我使用brew install 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 一起工作?

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

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

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

    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

感谢高级版的帮助

4

1 回答 1

5

自制软件的工作方式是将所有内容放入

/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 并且所有自制程序都可以按名称运行,例如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>
于 2019-02-23T10:05:54.170 回答