Вы можете использовать скрипт оболочки, который принимает некоторые подсказки, как его вызвал и вызывает make
после установки CFLAGS
соответственно для случайной одноразовой сборки.
Допустим, у вас есть /usr/bin/compile
, который представляет собой скрипт оболочки, который смотрит на $0
, чтобы узнать, какое имя фактически вызвало его. Затем сделать символические ссылки на него с именем pedantic
, fullwarn
и т.д.
В самом сценарии оболочки, что-то вроде:
OLDCFLAGS=$CFLAGS
WHATAMI=$(basename $0)
case "$WHATAMI" in
pedantic)
export CFLAGS="-Wall -pedantic -ansi"
make [email protected]
exit $?
;;
c99)
export CFLAGS="-std=c99 ... ... ..."
....
Затем, чтобы скомпилировать Foo.с с дополнительными сварливыми флагами:
pedantic foo
Это удобно, так как я сказал на одноразовый строит, например, при попытке скомпилировать код, который кто-то разместил в вопросе, или работать, как использовать новую библиотеку и т. д.
Для чего-либо еще, просто используйте make-файл, как говорили другие.
Продвинутый вариант для предложения жестко закодированного (и сломанного) Makefile, когда неявные правила с 'export CFLAGS = ...' в среде делают именно то, что хочет Jef Ty. (См. Ответ Скотта Уэйлса). –
@Matt B: целью make-файла было просто представить концепцию make-файла, предоставив самый простой возможный пример, который будет работать, набрав make. Без использования неявных правил. Однако я удалил этот пример. Очень возможно, что OP захочет сделать что-то более сложное со своим make-файлом, если не сегодня, то скоро. –