首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在用brew安装fmt和gcc编译器之后,没有找到fmt库?

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

Stack Overflow用户
提问于 2019-02-23 07:50:12
回答 1查看 6K关注 0票数 5

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

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

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

然后我键入:

代码语言:javascript
运行
复制
/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"

然而,我得到了这个错误:

代码语言:javascript
运行
复制
fatal error: fmt/format.h: No such file or directory

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

当我使用clang时,fmt和boost是没有问题的。

以防我对C/C++开发人员使用Eclipse。版本: 2018-12 (4.10.0)。

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

我在我的Mac /usr/local/c业力中拥有的是:

代码语言:javascript
运行
复制
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/c业力中拥有的是:

代码语言:javascript
运行
复制
    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

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-23 10:05:54

自制的工作方式是把所有的东西都放进去。

代码语言:javascript
运行
复制
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION

然后,它为/usr/local/bin中的二进制文件创建指向这些东西的链接。

代码语言:javascript
运行
复制
/usr/local/bin/grep -> /usr/local/Cellar/grep/4.17/bin/grep

因此,您只需将/usr/local/bin放在您的路径中,那么所有自制程序都将按名称运行,例如上面示例中的grep

它为编译做了同样的事情,它将实际的头和库放在:

代码语言:javascript
运行
复制
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/include
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/lib

中的链接。

代码语言:javascript
运行
复制
/usr/local/include
/usr/local/lib

因此,您的gcc命令将是:

代码语言:javascript
运行
复制
g++-8 -I /usr/local/include -L /usr/local/lib -lfmt <PROGRAM.CPP> -o <PROGRAM>

您可以看到哪些文件属于您的fmt包以及它们在哪里:

代码语言:javascript
运行
复制
brew ls fmt --verbose

如果安装pkg-config,请使用:

代码语言:javascript
运行
复制
brew install pkg-config

它将使用文件fmt.pc,并可以告诉您正确的编译开关,如果您键入:

代码语言:javascript
运行
复制
pkg-config --libs --cflags fmt

样本输出

代码语言:javascript
运行
复制
-I/usr/local/Cellar/fmt/5.3.0/include -L/usr/local/Cellar/fmt/5.3.0/lib -lfmt

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

代码语言:javascript
运行
复制
g++-8 $(pkg-config --libs --cflags fmt) <PROGRAM.CPP> -o <PROGRAM>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54839414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档