Makefile - makra

Plik makeprogram pozwala na użycie makr, które są podobne do zmiennych. Makra są zdefiniowane w Makefile as = pairs. Przykład pokazano poniżej -

MACROS  = -me
PSROFF  = groff -Tps
DITROFF = groff -Tdvi
CFLAGS  = -O -systype bsd43
LIBS    = "-lncurses -lm -lsdl"
MYFACE  = ":*)"

Specjalne makra

Przed wydaniem jakiegokolwiek polecenia w docelowym zestawie reguł istnieją wstępnie zdefiniowane specjalne makra -

  • $ @ to nazwa pliku, który ma zostać utworzony.

  • $? to nazwy zmienionych osób zależnych.

Na przykład możemy użyć następującej reguły -

hello: main.cpp hello.cpp factorial.cpp
   $(CC) $(CFLAGS) $? $(LDFLAGS) -o $@

Alternatively:

hello: main.cpp hello.cpp factorial.cpp
   $(CC) $(CFLAGS) [email protected] $(LDFLAGS) -o $@

W tym przykładzie $ @ reprezentuje cześć, a $? lub $ @. cpp pobiera wszystkie zmienione pliki źródłowe.

W regułach niejawnych są jeszcze dwa specjalne makra. Oni są -

  • $ <nazwa powiązanego pliku, który spowodował działanie.

  • $ * przedrostek współużytkowany przez pliki docelowe i zależne.

Typowa niejawna reguła dotyczy konstruowania plików .o (obiektów) z .cpp (plików źródłowych).

.cpp.o:
   $(CC) $(CFLAGS) -c $<

Alternatively:

.cpp.o:
   $(CC) $(CFLAGS) -c $*.c

Konwencjonalne makra

Istnieją różne domyślne makra. Możesz je zobaczyć, wpisując "make -p", aby wydrukować ustawienia domyślne. Większość z nich jest dość oczywista na podstawie zasad, w których są używane.

Te predefiniowane zmienne, tj. Makra używane w regułach niejawnych, dzielą się na dwie klasy. Są następujące -

  • Makra, które są nazwami programów (np. CC)

  • Makra zawierające argumenty programów (np. CFLAGS).

Poniżej znajduje się tabela niektórych typowych zmiennych używanych jako nazwy programów we wbudowanych regułach plików makefile -

Sr.No Zmienne i opis
1

AR

Program do obsługi archiwów; domyślnie jest to `ar '.

2

AS

Program do kompilowania plików asemblerowych; domyślnie jest to „as”.

3

CC

Program do kompilowania programów w C; Domyślnie jest to `cc '.

4

CO

Program do pobierania plików z RCS; domyślnie jest to `co '.

5

CXX

Program do kompilacji programów w C ++; domyślnie jest to `g ++ '.

6

CPP

Program do uruchamiania preprocesora C, z wynikami na standardowe wyjście; domyślnie jest to `$ (CC) -E '.

7

FC

Program do kompilacji lub wstępnego przetwarzania programów Fortran i Ratfor; domyślnie jest to `f77 '.

8

GET

Program do wyodrębniania pliku z SCCS; domyślnie jest to `get '.

9

LEX

Program używany do przekształcania gramatyki Lexa w kod źródłowy; domyślnie jest to `lex '.

10

YACC

Program używany do przekształcania gramatyki Yacc w kod źródłowy; Domyślnie jest to `yacc '.

11

LINT

Program do uruchamiania linta na kodzie źródłowym; domyślnie jest to `lint '.

12

M2C

Program do kompilacji kodu źródłowego Modula-2; Domyślnie jest to `m2c '.

13

PC

Program do kompilacji programów Pascal; Domyślnie jest to `pc '.

14

MAKEINFO

Program do konwersji pliku źródłowego Texinfo do pliku Info; Domyślnie jest to `makeinfo '.

15

TEX

Program do tworzenia plików TeX dvi ze źródła TeX; domyślnie jest to `tex '.

16

TEXI2DVI

Program do tworzenia plików TeX dvi ze źródeł Texinfo; Domyślnie jest to `texi2dvi '.

17

WEAVE

Program do tłumaczenia stron internetowych na TeX; wartość domyślna to `weave '.

18

CWEAVE

Program do tłumaczenia C Web na TeX; Domyślnie jest to `cweave '.

19

TANGLE

Program do tłumaczenia stron internetowych na język Pascal; domyślnie jest to `tangle '.

20

CTANGLE

Program do tłumaczenia C Web na C; domyślnie jest to `ctangle '.

21

RM

Polecenie usunięcia pliku; domyślnie jest to `rm -f '.

Oto tabela zmiennych, których wartości są dodatkowymi argumentami dla powyższych programów. Domyślną wartością dla wszystkich tych elementów jest pusty ciąg, chyba że zaznaczono inaczej.

Sr.No. Zmienne i opis
1

ARFLAGS

Flagi nadające programowi do obsługi archiwum; domyślnie jest to `rv '.

2

ASFLAGS

Dodatkowe flagi, które należy przekazać asemblerowi, gdy są jawnie wywoływane w pliku `.s 'lub` .S'.

3

CFLAGS

Dodatkowe flagi, które należy przekazać kompilatorowi C.

4

CXXFLAGS

Dodatkowe flagi, które należy przekazać kompilatorowi C.

5

COFLAGS

Dodatkowe flagi do nadania wspólnemu programowi RCS.

6

CPPFLAGS

Dodatkowe flagi, które należy przekazać preprocesorowi C i programom, które go używają (na przykład kompilatorom C i Fortran).

7

FFLAGS

Dodatkowe flagi do nadania kompilatorowi języka Fortran.

8

GFLAGS

Dodatkowe flagi do nadania programowi pobierania SCCS.

9

LDFLAGS

Dodatkowe flagi, które mają być podane kompilatorom, gdy mają wywołać konsolidator, `ld '.

10

LFLAGS

Dodatkowe flagi do przekazania Lexowi.

11

YFLAGS

Dodatkowe flagi dla Yacc.

12

PFLAGS

Dodatkowe flagi, które należy przekazać kompilatorowi Pascala.

13

RFLAGS

Dodatkowe flagi do nadania kompilatorowi Fortran dla programów Ratfor.

14

LINTFLAGS

Dodatkowe flagi do nadania kłaczkom.

NOTE - Możesz anulować wszystkie zmienne używane przez niejawne reguły za pomocą opcji „-R” lub „--no-builtin-variable”.

Możesz także zdefiniować makra w wierszu poleceń, jak pokazano poniżej -

make CPP = /home/courses/cop4530/spring02