在用brew安装fmt和gcc编译器后,为什么找不到fmt库?

时间:2019-02-23 07:50:13

标签: c++ macos gcc homebrew fmt

我使用的是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

感谢高级帮助

1 个答案:

答案 0 :(得分:3)

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

let sol1 = bisect({ x in pow(x, 3) - 2 * pow(x, 2) - 5 }, xleft: 2.0, xright: 4.0)
print(sol1) // 2.690647602081299

let sol2 = bisect({ x in cos(x/2)}, xleft: 3.0, xright: 4.0, eps: 1.0e-15)
print(sol2) // 3.1415926535897936

,然后为/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION 中的二进制文件创建到这些东西的链接,例如

/usr/local/bin

,这样您只需要将/usr/local/bin/grep -> /usr/local/Cellar/grep/4.17/bin/grep 放入PATH中,所有 homebrew 程序都可以按名称运行,例如上例中的/usr/local/bin


它执行相同的编译操作,将实际的标头和库放入:

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