Программа make позволяет вам использовать макросы, которые похожи на переменные. Макросы определены в Makefile как пары =. Пример был показан ниже —
MACROS = -me PSROFF = groff -Tps DITROFF = groff -Tdvi CFLAGS = -O -systype bsd43 LIBS = "-lncurses -lm -lsdl" MYFACE = ":*)"
Специальные макросы
Перед выполнением любой команды в целевом наборе правил предопределены определенные специальные макросы —
-
$ @ — это имя файла, который нужно создать.
-
$? это имена измененных иждивенцев.
$ @ — это имя файла, который нужно создать.
$? это имена измененных иждивенцев.
Например, мы можем использовать правило следующим образом:
hello: main.cpp hello.cpp factorial.cpp $(CC) $(CFLAGS) $? $(LDFLAGS) -o $@ Alternatively: hello: main.cpp hello.cpp factorial.cpp $(CC) $(CFLAGS) $@.cpp $(LDFLAGS) -o $@
В этом примере $ @ представляет привет и $? или $ @. cpp забирает все измененные исходные файлы.
В неявных правилах используются еще два специальных макроса. Они —
-
$ <имя связанного файла, вызвавшего действие.
-
$ * префикс, общий для целевых и зависимых файлов.
$ <имя связанного файла, вызвавшего действие.
$ * префикс, общий для целевых и зависимых файлов.
Общее неявное правило — для создания .o (объектных) файлов из .cpp (исходных файлов).
.cpp.o: $(CC) $(CFLAGS) -c $< Alternatively: .cpp.o: $(CC) $(CFLAGS) -c $*.c
Обычные макросы
Существуют различные макросы по умолчанию. Вы можете увидеть их, набрав «make -p» для распечатки значений по умолчанию. Большинство из них довольно очевидно из правил, в которых они используются.
Эти предопределенные переменные, то есть макросы, используемые в неявных правилах, делятся на два класса. Они заключаются в следующем —
-
Макросы, которые являются названиями программ (например, CC)
-
Макросы, которые содержат аргументы программ (например, CFLAGS).
Макросы, которые являются названиями программ (например, CC)
Макросы, которые содержат аргументы программ (например, CFLAGS).
Ниже приведена таблица некоторых распространенных переменных, используемых в качестве имен программ во встроенных правилах make-файлов.
Sr.No | Переменные и описание |
---|---|
1 |
Арканзас Архивно-поддерживающая программа; по умолчанию это `ar ‘. |
2 |
КАК Программа для компиляции сборочных файлов; по умолчанию `as ‘. |
3 |
CC Программа для составления программ на С; по умолчанию это `cc ‘. |
4 |
Колорадо Программа для проверки файлов из RCS; по умолчанию это `co ‘. |
5 |
CXX Программа для компиляции программ на C ++; по умолчанию это `g ++ ‘. |
6 |
CPP Программа для запуска препроцессора C, с результатами на стандартный вывод; по умолчанию это `$ (CC) -E ‘. |
7 |
FC Программа для компиляции или предварительной обработки программ на Fortran и Ratfor; по умолчанию `f77 ‘. |
8 |
ПОЛУЧИТЬ Программа для извлечения файла из SCCS; по умолчанию `get ‘. |
9 |
LEX Программа для превращения грамматик Lex в исходный код; по умолчанию это `lex ‘. |
10 |
YACC Программа для преобразования грамматики Yacc в исходный код; по умолчанию это `yacc ‘. |
11 |
LINT Программа для запуска lint в исходном коде; по умолчанию это `lint ‘. |
12 |
M2C Программа, используемая для компиляции исходного кода Modula-2; по умолчанию `m2c ‘. |
13 |
ПК Программа для компиляции программ на Паскале; по умолчанию это `pc ‘. |
14 |
MAKEINFO Программа для преобразования исходного файла Texinfo в Info-файл; по умолчанию это `makeinfo ‘. |
15 |
TEX Программа для создания файлов TeX DVI из источника TeX; по умолчанию это `tex ‘. |
16 |
texi2dvi Программа для создания файлов TeX dvi из источника Texinfo; по умолчанию используется texi2dvi. |
17 |
WEAVE Программа для перевода Web в TeX; по умолчанию это «переплетение». |
18 |
CWEAVE Программа для перевода C Web в TeX; по умолчанию это `cweave ‘. |
19 |
TANGLE Программа для перевода веб на Паскаль; по умолчанию это «клубок». |
20 |
CTANGLE Программа для перевода C Web в C; по умолчанию это `ctangle ‘. |
21 |
RM Команда на удаление файла; по умолчанию это `rm -f ‘. |
Арканзас
Архивно-поддерживающая программа; по умолчанию это `ar ‘.
КАК
Программа для компиляции сборочных файлов; по умолчанию `as ‘.
CC
Программа для составления программ на С; по умолчанию это `cc ‘.
Колорадо
Программа для проверки файлов из RCS; по умолчанию это `co ‘.
CXX
Программа для компиляции программ на C ++; по умолчанию это `g ++ ‘.
CPP
Программа для запуска препроцессора C, с результатами на стандартный вывод; по умолчанию это `$ (CC) -E ‘.
FC
Программа для компиляции или предварительной обработки программ на Fortran и Ratfor; по умолчанию `f77 ‘.
ПОЛУЧИТЬ
Программа для извлечения файла из SCCS; по умолчанию `get ‘.
LEX
Программа для превращения грамматик Lex в исходный код; по умолчанию это `lex ‘.
YACC
Программа для преобразования грамматики Yacc в исходный код; по умолчанию это `yacc ‘.
LINT
Программа для запуска lint в исходном коде; по умолчанию это `lint ‘.
M2C
Программа, используемая для компиляции исходного кода Modula-2; по умолчанию `m2c ‘.
ПК
Программа для компиляции программ на Паскале; по умолчанию это `pc ‘.
MAKEINFO
Программа для преобразования исходного файла Texinfo в Info-файл; по умолчанию это `makeinfo ‘.
TEX
Программа для создания файлов TeX DVI из источника TeX; по умолчанию это `tex ‘.
texi2dvi
Программа для создания файлов TeX dvi из источника Texinfo; по умолчанию используется texi2dvi.
WEAVE
Программа для перевода Web в TeX; по умолчанию это «переплетение».
CWEAVE
Программа для перевода C Web в TeX; по умолчанию это `cweave ‘.
TANGLE
Программа для перевода веб на Паскаль; по умолчанию это «клубок».
CTANGLE
Программа для перевода C Web в C; по умолчанию это `ctangle ‘.
RM
Команда на удаление файла; по умолчанию это `rm -f ‘.
Вот таблица переменных, значения которых являются дополнительными аргументами для программ выше. Значениями по умолчанию для всех них является пустая строка, если не указано иное.
Sr.No. | Переменные и описание |
---|---|
1 |
ARFLAGS Флаги для выдачи архива, поддерживающего программу; по умолчанию это `rv ‘. |
2 |
ASFLAGS Дополнительные флаги для ассемблера при явном вызове в файл `.s ‘или` .S. |
3 |
CFLAGS Дополнительные флаги для компилятора Си. |
4 |
CXXFLAGS Дополнительные флаги для компилятора Си. |
5 |
COFLAGS Дополнительные флаги для передачи в программу RCS. |
6 |
CPPFLAGS Дополнительные флаги для препроцессора C и программ, которые его используют (таких как компиляторы C и Fortran). |
7 |
FFLAGS Дополнительные флаги для компилятора Фортрана. |
8 |
GFLAGS Дополнительные флаги для программы SCCS get. |
9 |
LDFLAGS Дополнительные флаги для компиляторов, когда они должны вызывать компоновщик, `ld ‘. |
10 |
LFLAGS Дополнительные флаги для Лекса. |
11 |
YFLAGS Дополнительные флаги для Yacc. |
12 |
PFLAGS Дополнительные флаги для передачи компилятору Pascal. |
13 |
RFLAGS Дополнительные флаги для компилятора Фортрана для программ Ratfor. |
14 |
LINTFLAGS Дополнительные флаги для ворса. |
ARFLAGS
Флаги для выдачи архива, поддерживающего программу; по умолчанию это `rv ‘.
ASFLAGS
Дополнительные флаги для ассемблера при явном вызове в файл `.s ‘или` .S.
CFLAGS
Дополнительные флаги для компилятора Си.
CXXFLAGS
Дополнительные флаги для компилятора Си.
COFLAGS
Дополнительные флаги для передачи в программу RCS.
CPPFLAGS
Дополнительные флаги для препроцессора C и программ, которые его используют (таких как компиляторы C и Fortran).
FFLAGS
Дополнительные флаги для компилятора Фортрана.
GFLAGS
Дополнительные флаги для программы SCCS get.
LDFLAGS
Дополнительные флаги для компиляторов, когда они должны вызывать компоновщик, `ld ‘.
LFLAGS
Дополнительные флаги для Лекса.
YFLAGS
Дополнительные флаги для Yacc.
PFLAGS
Дополнительные флаги для передачи компилятору Pascal.
RFLAGS
Дополнительные флаги для компилятора Фортрана для программ Ratfor.
LINTFLAGS
Дополнительные флаги для ворса.
ПРИМЕЧАНИЕ. — Вы можете отменить все переменные, используемые неявными правилами, с помощью опции ‘-R’ или ‘—no-builtin-variable’.
Вы также можете определить макросы в командной строке, как показано ниже —