Spec-Zone.ru › GNU Make

Переменные, используемые неявными правилами

Рецепты в встроенных неявных правилах широко используют определенные предопределенные переменные. Вы можете изменить значения этих переменных в файле 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API