Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在brew中安装fmt和gcc编译器后找不到fmt库?_C++_Macos_Gcc_Homebrew_Fmt - Fatal编程技术网

C++ 为什么在brew中安装fmt和gcc编译器后找不到fmt库?

C++ 为什么在brew中安装fmt和gcc编译器后找不到fmt库?,c++,macos,gcc,homebrew,fmt,C++,Macos,Gcc,Homebrew,Fmt,我使用的是MACOS Mojave版本10.14.3,需要使用GNU编译器,而不是clang 我使用brew安装gcc安装了gcc编译器。 然后,我使用brew安装fmt安装了fmt库 我把代码>包含在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

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

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

我把代码>包含在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库时也会发生同样的情况

当我使用叮当声时,fmt和boost被发现是没有问题的

以防万一,我正在为C/C++开发人员使用EclipseIDE。版本:2018-12(4.10.0)

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

我在Mac at/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
    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
我在Mac at/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
    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

感谢高级

的帮助自制的工作方式是将所有东西都放入

/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
放在路径中,所有自制程序都可以按名称运行,例如上例中的
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>

如果安装
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>
g++-8$(pkg-config--libs--cflags-fmt)-o

这不是GCC的问题,而是安装库的地方的问题。如果它没有安装在“标准”位置,则必须告诉
g++
frontend程序在哪里可以找到头文件和库文件。使用
-I
(大写I)选项指定头文件的安装位置,以及任何链接器库的
-L
-L
(小写L)选项。我想这是考虑了
/usr/local/cillar
的内容。我猜您需要添加
-I/usr/local/cillar
。因为我不知道
brew
在安装时是如何组织其软件包的,可能类似于
-I/usr/local/ceral/fmt/include
?您可以将目录添加到Eclipse项目设置的某个位置(预处理器设置选项卡或类似选项卡?),但通常不使用实际的
-I
选项。我是C++的新用户。你能帮我看看我的g++命令行应该是什么样子吗?在
/usr/local/lib
中,我有这样一个问题:
lrwxr-xr-x 1 aaa admin 2月23日01:58 libfmt.a->../ceral/fmt/5.3.0/lib/libfmt.a
我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案-点击空心蜱/支票旁边的选票计数。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢