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