Переменные, используемые неявными правилами
Рецепты в встроенных неявных правилах широко используют определенные предопределенные переменные. Вы можете изменить значения этих переменных в файле make, с аргументами к make, или в среде, чтобы изменить, как работают неявные правила, не переопределяя сами правила. Вы можете отменить все переменные, используемые неявными правилами, с помощью опции ‘-R’ или ‘--no-builtin-variables’.
Например, рецепт, используемый для компиляции файла исходного кода C, фактически говорит ‘$(CC) -c $(CFLAGS) $(CPPFLAGS)’. Значения по умолчанию переменных, используемых, — ‘cc’ и ничего, что приводит к команде ‘cc -c’. Переопределив ‘CC’ на ‘ncc’, вы могли бы заставить ‘ncc’ использоваться для всех компиляций C, выполняемых неявным правилом. Переопределив ‘CFLAGS’ на ‘-g’, вы могли бы передать опцию ‘-g’ каждой компиляции. Все неявные правила, выполняющие компиляцию C, используют ‘$(CC)’, чтобы получить имя программы для компилятора, и все включают ‘$(CFLAGS)’ среди аргументов, переданных компилятору.
Переменные, используемые в неявных правилах, делятся на два класса: те, которые являются именами программ (например, CC) и те, которые содержат аргументы для программ (например, CFLAGS). (Имя «программы» также может содержать некоторые аргументы команд, но оно должно начинаться с фактического имени исполняемой программы.) Если значение переменной содержит более одного аргумента, разделяйте их пробелами.
В следующих таблицах описаны некоторые из наиболее часто используемых предопределенных переменных. Этот список не является исчерпывающим, и значения по умолчанию, показанные здесь, могут не быть теми, что make выбирает для вашей среды. Чтобы увидеть полный список предопределенных переменных для вашей инстанции GNU make, вы можете запустить ‘make -p’ в каталоге без файлов make.
Вот таблица некоторых из наиболее распространенных переменных, используемых в качестве имен программ во встроенных правилах:
AR-
Программа для управления архивами; значение по умолчанию ‘ar’.
AS-
Программа для компиляции файлов ассемблера; значение по умолчанию ‘as’.
CC-
Программа для компиляции программ C; значение по умолчанию ‘cc’.
CXX-
Программа для компиляции программ C++; значение по умолчанию ‘g++’.
CPP-
Программа для выполнения препроцессора C с результатами в стандартный вывод; значение по умолчанию ‘$(CC) -E’.
FC-
Программа для компиляции или предварительной обработки программ Fortran и Ratfor; значение по умолчанию ‘f77’.
M2C-
Программа для компиляции исходного кода Modula-2; значение по умолчанию ‘m2c’.
PC-
Программа для компиляции программ Pascal; значение по умолчанию ‘pc’.
CO-
Программа для извлечения файла из RCS; значение по умолчанию ‘co’.
GET-
Программа для извлечения файла из SCCS; значение по умолчанию ‘get’.
LEX-
Программа для преобразования грамматик Lex в исходный код; значение по умолчанию ‘lex’.
YACC-
Программа для преобразования грамматик Yacc в исходный код; значение по умолчанию ‘yacc’.
LINT-
Программа для запуска lint на исходном коде; значение по умолчанию ‘lint’.
MAKEINFO-
Программа для преобразования файла исходного кода Texinfo в файл Info; значение по умолчанию ‘makeinfo’.
TEX-
Программа для создания файлов TeX DVI из исходного кода TeX; значение по умолчанию ‘tex’.
TEXI2DVI-
Программа для создания файлов TeX DVI из исходного кода Texinfo; значение по умолчанию ‘texi2dvi’.
WEAVE-
Программа для преобразования Web в TeX; значение по умолчанию ‘weave’.
CWEAVE-
Программа для преобразования C Web в TeX; значение по умолчанию ‘cweave’.
TANGLE-
Программа для преобразования Web в Pascal; значение по умолчанию ‘tangle’.
CTANGLE-
Программа для преобразования C Web в C; значение по умолчанию ‘ctangle’.
RM-
Команда для удаления файла; значение по умолчанию ‘rm -f’.
Вот таблица переменных, значениями которых являются дополнительные аргументы для вышеперечисленных программ. Значения по умолчанию для всех этих переменных — пустая строка, если не указано иное.
ARFLAGS-
Флаги для передачи программе управления архивами; значение по умолчанию ‘rv’.
ASFLAGS-
Дополнительные флаги для передачи ассемблеру (при явном вызове на файл ‘.s’ или ‘.S’).
CFLAGS-
Дополнительные флаги для передачи компилятору C.
CXXFLAGS-
Дополнительные флаги для передачи компилятору C++.
COFLAGS-
Дополнительные флаги для передачи программе RCS
co. CPPFLAGS-
Дополнительные флаги для передачи препроцессору C и программам, использующим его (компиляторы C и Fortran).
FFLAGS-
Дополнительные флаги для передачи компилятору Fortran.
GFLAGS-
Дополнительные флаги для передачи программе SCCS
get. LDFLAGS-
Дополнительные флаги для передачи компиляторам, когда они должны вызвать компоновщик, ‘ld’, например
-L. Библиотеки (-lfoo) следует добавить в переменнуюLDLIBSвместо этого. LDLIBS-
Флаги или имена библиотек, передаваемые компиляторам, когда они должны вызвать компоновщик, ‘ld’.
LOADLIBESявляется устаревшей (но по-прежнему поддерживаемой) альтернативойLDLIBS. Флаги компоновщика, не относящиеся к библиотекам, такие как-L, должны быть добавлены в переменнуюLDFLAGS. LFLAGS-
Дополнительные флаги для Lex.
YFLAGS-
Дополнительные флаги для Yacc.
PFLAGS-
Дополнительные флаги для компилятора Pascal.
RFLAGS-
Дополнительные флаги для компилятора Fortran для программ Ratfor.
LINTFLAGS-
Дополнительные флаги для lint.
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html