ana*_*odo 3 c++ macos homebrew gcc fmt
我使用的是 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"
Run Code Online (Sandbox Code Playgroud)
但是我收到这个错误:
fatal error: fmt/format.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 boost 库时也会发生同样的情况。
当我使用 clang 时,发现 fmt 和 boost 没有问题。
以防万一我将 Eclipse IDE 用于 C/C++ 开发人员。版本: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
Run Code Online (Sandbox Code Playgroud)
我在 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
Run Code Online (Sandbox Code Playgroud)
感谢您在高级方面的帮助
自制软件的工作方式是将所有内容都放入
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION
Run Code Online (Sandbox Code Playgroud)
然后它为 中的二进制文件创建指向这些内容的链接/usr/local/bin
,例如
/usr/local/bin/grep -> /usr/local/Cellar/grep/4.17/bin/grep
Run Code Online (Sandbox Code Playgroud)
这样你只需要/usr/local/bin
输入你的 PATH 并且所有自制程序都可以按名称运行,例如grep
在上面的例子中。
它为编译做同样的事情,它将实际的头文件和库放在:
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/include
/usr/local/Cellar/PACKAGE-NAME/PACKAGE-VERSION/lib
Run Code Online (Sandbox Code Playgroud)
并创建链接到那些
/usr/local/include
/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
因此,您的gcc
命令将是:
g++-8 -I /usr/local/include -L /usr/local/lib -lfmt <PROGRAM.CPP> -o <PROGRAM>
Run Code Online (Sandbox Code Playgroud)
您可以查看哪些文件属于您的fmt
包以及它们所在的位置:
brew ls fmt --verbose
Run Code Online (Sandbox Code Playgroud)
如果安装pkg-config
,请使用:
brew install pkg-config
Run Code Online (Sandbox Code Playgroud)
fmt.pc
如果您键入,它将使用该文件并告诉您正确的编译开关:
pkg-config --libs --cflags fmt
Run Code Online (Sandbox Code Playgroud)
样本输出
-I/usr/local/Cellar/fmt/5.3.0/include -L/usr/local/Cellar/fmt/5.3.0/lib -lfmt
Run Code Online (Sandbox Code Playgroud)
这意味着您可以将gcc
命令简化为:
g++-8 $(pkg-config --libs --cflags fmt) <PROGRAM.CPP> -o <PROGRAM>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2372 次 |
最近记录: |