Почему библиотека fmt не найдена после установки компилятора fmt и gcc с brew?
Я использую MACOS Mojavi версии 10.14.3 и мне нужно использовать компилятор GNU, а не clang.
Я установил компилятор gcc используя brew install gcc
, Затем я установил библиотеку fmt, используя 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"
Однако я получаю эту ошибку:
fatal error: fmt/format.h: No such file or directory
То же самое происходит, когда я пытаюсь использовать библиотеку наддува.
Когда я использую clang, fmt и boost находятся без проблем.
На всякий случай я использую Eclipse IDE для разработчиков на C/C++. Версия: 2018-12 (4.10.0).
Если конкретно, как я могу заставить библиотеку fmt работать с gcc, который я установил с brew?
В моем 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 ответ
Доморощенный подход состоит в том, что он помещает все в
/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 и все доморощенные программы будут запускаться по имени, например 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>