#gcc #g
#gcc #g
Вопрос:
Есть ли способ заставить gcc использовать абсолютный путь при выводе ошибок, обнаруженных в файлах, скомпилированных в текущем каталоге?
Например, следующее делает то, что я хочу, при выводе ошибок:
g -I. -I../../.. /home/some/path/somefile.cpp
но я хочу добиться того же с помощью чего-то вроде:
g -I. -I../../.. somefile.cpp
Я хочу, чтобы предупреждения и ошибки форматировались примерно так:
/home/some/path/somefile.cpp:299:52: warning: some warning
Ответ №1:
Нет способа сделать это с помощью самого gcc, но это тривиально с помощью скрипта-оболочки, установленного как «gcc», «g » и т.д. В каталоге перед /usr/bin
в вашем PATH:
#! /bin/sh
sourcefile="$1"; shift
case "$sourcefile" in
/*) ;;
*) sourcefile="$PWD/$sourcefile" ;;
esac
exec "/usr/bin/${0##*/}" "$sourcefile" "$@"
… при условии, что вы всегда ставите исходный файл первым при вызове компилятора (вам придется настроить ваши Makefile-файлы).
Комментарии:
1. Это привело бы к ужасной поломке, если бы $ 1 был абсолютным путем или если $ 1 равен «-I.» (как в вопросе).
2. Я сказал, что вы всегда должны ставить исходный файл первым. Хороший момент в том, что 1 доллар — это абсолютный путь, но я это исправлю.