Использвать компилятор GNU g++ вместо c++ на mac os
У меня есть проект на С++, который я ранее писал на компе с Ubuntu, а недавно пересел на мак и теперь хочу продолжить работу уже на нём.
Есть makefile, в котором есть следующая строчка:
$(DELTA): $(SRC)/atlantida/delta.o
g++ -o $(BUILD)/atlantida/$(DELTA) $(SRC)/atlantida/delta.o
delta.o: $(SRC)/atlantida/delta.cpp
g++ -O0 -g -Wall -c $(SRC)/atlantida/delta.cpp
Но при запуске make в выводе терминала я вижу, что используется ещё и с++, который собирает исполняемый файл из объектного:
c++ -c -o src//atlantida/delta.o src//atlantida/delta.cpp
g++ -o ./build//atlantida/delta.exe ./src//atlantida/delta.o
Дело в том, что c++ --version показывает, что c++ - это эпловский clang:
ivan@MacBook-Pro-Ivan projectAntares % c++ --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Вопроса у меня два:
- Почему мак использует свой компилятор c++, если я в makefile прошу его использовать g++
- Как его заставить собирать исполняемый файл именно при помощи GNU g++ (gcc) вместо Clang?
На всякий случай:
ivan@MacBook-Pro-Ivan projectAntares % which gcc
/opt/homebrew/bin/gcc
ivan@MacBook-Pro-Ivan projectAntares % which g++
/opt/homebrew/bin/g++
ivan@MacBook-Pro-Ivan projectAntares % gcc --version
gcc (Homebrew GCC 12.2.0) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ivan@MacBook-Pro-Ivan projectAntares % g++ --version
g++ (Homebrew GCC 12.2.0) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
P.S.У меня mac os Ventura 13.2.1, макбук с M1 Pro. Если для ответов на вопросы понадобится что-то ещё, я оперативно подгружу всё, что нужно)
Источник: Stack Overflow на русском