Вызывать разные компиляторы в зависимости от конфигурации

На данный момент я развиваюсь на двух разных машинах. На одном gcc отображаются карты gcc 4.6 и есть gcc3 для тех, кому нужна действительно старая версия gcc. На другой машине gcc сопоставляется с v3 gcc и существует команда gcc4 для вызова нового компилятора.

Проблема должна быть очевидной - мне нужен один make-файл для обеих машин, что в основном означает определение CC в зависимости от того, можно ли найти gcc4 или нет.

0
nl ja de
@HighPerformanceMark У меня нет большого опыта работы с более сложными частями make-файлов, поэтому я просто искал и не мог найти ничего подходящего. Я пробовал много других вещей $ (shell, который gcc4) , но это не удалось, потому что проверка возвращаемого значения была выполнена в разных оболочках - видя, что решение теперь делает это очевидным, но тогда это было просто другое неудачная попытка.
добавлено автор Voo, источник

1 ответы

В качестве быстрого взлома вы можете добавить простую проверку на основе оболочки для gcc4 bin внутри вашего файла makefile. Например:

CC := $(shell gcc4 -dumpversion >/dev/null 2>&1; if [ "$$?" -eq 0 ]; then echo "gcc4"; else echo "gcc"; fi)
<...>
$(CC) -c myprogram.c -o myprogram.o
<...>

Однако для более зрелых проектов я бы рекомендовал рассмотреть инструменты, разработанные для этой задачи ( autoconf ).

1
добавлено
Я играл с $ (shell, который gcc4) , но не мог понять, как получить код возврата (код, по-видимому, выполнен в разных оболочках), отлично работает. Я рассмотрю autoconf, но поскольку единственное различие заключается в том, как вызвать компилятор, теперь простое решение прекрасно работает.
добавлено автор Voo, источник