Должны ли более длинные синонимы для локальных переменных использоваться в Makefile? - PullRequest
0 голосов
/ 03 января 2019

В make (я использую реализацию OpenBSD, но я полагаю, что вопрос актуален и для GNU make), у нас есть следующие так называемые локальные переменные

@    The name of the target
%    The name of the archive member (for library rules)
!    The name of the archive file (for library rules)
?    The list of prerequisites for this target that were deemed out of date
<    The name of the prerequisite from which this target is to be built (for inference rules)
*    The file prefix of the file, containing only the file portion, no suffix or preceding directory components

(примерно от man make в OpenBSD)

Эти локальные переменные имеют синонимы: например, .IMPSRC для < или .TARGET для @.В руководстве по FreeBSD говорится, что эти более длинные версии предпочтительнее.В справочной странице OpenBSD ничего подобного нет, но говорится, что эти длинные имена являются расширением.

Лучше ли использовать более длинные имена?Что лучше для совместимости?Оба POSIX?

1 Ответ

0 голосов
/ 03 января 2019

Эти переменные называются автоматические переменные в GNU make и внутренние переменные в стандарте POSIX.

Длинные имена для них:Изобретения, сделанные исключительно BSD, их нет ни в одной другой версии make (например, GNU make), и они не упоминаются в стандарте POSIX для make.

Вам решать,Вы хотите использовать их, но они совершенно не переносимы.Конечно, вы всегда можете определить их самостоятельно, если хотите реализовать уровень совместимости.

...