CPPFlags в config.mk - PullRequest
       28

CPPFlags в config.mk

1 голос
/ 26 сентября 2011

В Arch Linux PKGBUILD для браузера серфинга есть:

sed -i 's/CPPFLAGS =/CPPFLAGS +=/g' config.mk
sed -i 's/CFLAGS =/CFLAGS +=/g' config.mk
sed -i 's/LDFLAGS =/LDFLAGS +=/g' config.mk

Почему флаги должны быть изменены с

CPPFLAGS = -DVERSION=\"${VERSION}\"

на

CPPFLAGS += -DVERSION=\"${VERSION}\"

IЯ заглянул в Google, но ничего об этом не вижу.Может кто-нибудь объяснить, пожалуйста, и скажите, где можно прочитать больше об этих флагах?

1 Ответ

1 голос
/ 27 сентября 2011

Я довольно много гуглил и обнаружил, что этот шаблон (Surf's здесь ), кажется довольно распространенным в файлах Arch Linux PKGBUILD. Другой пример был в PKMUILD DWM .

Очевидно, что он исправляет файл config.mk, поэтому при вызове make значения добавляются к флагам, а не переопределяют флаги (которые уже должны быть установлены в другом месте). Таким образом, должны быть существующие настройки, которые необходимо сохранить. Похоже, что это просто делается по умолчанию создателями пакетов, поэтому было сложно найти причину.

Глядя дальше, я обнаружил этот отчет об ошибке , относящийся к файлу config.mk DWM, где автор отмечает, что версия этого файла переопределяла флаги, установленные в makepkg.conf, который является основной конфигурацией файл для makepkg, который позволяет настраивать параметры компиляции для каждой машины. Это кажется разумным объяснением того, что вы нашли. На этой странице значение по умолчанию для CFLAGS будет примерно таким:

CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe"

Таким образом, исправленный файл config.mk приведет к следующему при сборке пакета:

CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -std=c99 -pedantic -Wall -Os -I. ....."
...