Makefile - Makro

Itu makeProgram memungkinkan Anda untuk menggunakan makro, yang mirip dengan variabel. Makro didefinisikan dalam Makefile sebagai = berpasangan. Contohnya telah ditunjukkan di bawah ini -

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

Makro Khusus

Sebelum mengeluarkan perintah apa pun dalam kumpulan aturan target, ada makro khusus tertentu yang telah ditentukan sebelumnya -

  • $ @ adalah nama file yang akan dibuat.

  • $? adalah nama-nama tanggungan yang diubah.

Misalnya, kita bisa menggunakan aturan sebagai berikut -

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 $@

Dalam contoh ini, $ @ mewakili halo dan $? atau $ @. cpp mengambil semua file sumber yang diubah.

Ada dua makro khusus yang digunakan dalam aturan implisit. Mereka adalah -

  • $ <nama file terkait yang menyebabkan tindakan.

  • $ * awalan yang dibagikan oleh file target dan file dependen.

Aturan implisit umum adalah untuk pembuatan file .o (objek) dari .cpp (file sumber).

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

Alternatively:

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

Makro Konvensional

Ada berbagai makro default. Anda dapat melihatnya dengan mengetik "make -p" untuk mencetak defaultnya. Sebagian besar cukup jelas dari aturan penggunaannya.

Variabel yang telah ditentukan ini, yaitu, makro yang digunakan dalam aturan implisit terbagi dalam dua kelas. Mereka adalah sebagai berikut -

  • Makro yang merupakan nama program (seperti CC)

  • Makro yang berisi argumen program (seperti CFLAGS).

Di bawah ini adalah tabel dari beberapa variabel umum yang digunakan sebagai nama program dalam aturan makefile built-in -

Sr Tidak Variabel & Deskripsi
1

AR

Program pemeliharaan arsip; defaultnya adalah `ar '.

2

AS

Program untuk menyusun file assembly; defaultnya adalah 'as'.

3

CC

Program untuk menyusun program C; defaultnya adalah `cc '.

4

CO

Program untuk memeriksa file dari RCS; defaultnya adalah `co '.

5

CXX

Program untuk menyusun program C ++; defaultnya adalah `g ++ '.

6

CPP

Program untuk menjalankan praprosesor C, dengan hasil untuk keluaran standar; defaultnya adalah `$ (CC) -E '.

7

FC

Program untuk menyusun atau memproses program Fortran dan Ratfor; defaultnya adalah `f77 '.

8

GET

Program untuk mengekstrak file dari SCCS; defaultnya adalah `get '.

9

LEX

Program yang digunakan untuk mengubah tata bahasa Lex menjadi kode sumber; defaultnya adalah `lex '.

10

YACC

Program yang digunakan untuk mengubah tata bahasa Yacc menjadi kode sumber; defaultnya adalah `yacc '.

11

LINT

Program yang digunakan untuk menjalankan lint pada kode sumber; defaultnya adalah `lint '.

12

M2C

Program yang digunakan untuk mengkompilasi kode sumber Modula-2; defaultnya adalah `m2c '.

13

PC

Program untuk menyusun program Pascal; defaultnya adalah `pc '.

14

MAKEINFO

Program untuk mengubah file sumber Texinfo menjadi file Info; defaultnya adalah `makeinfo '.

15

TEX

Program untuk membuat file dvi TeX dari sumber TeX; defaultnya adalah `tex '.

16

TEXI2DVI

Program untuk membuat file TeX dvi dari sumber Texinfo; defaultnya adalah `texi2dvi '.

17

WEAVE

Program untuk menerjemahkan Web ke dalam TeX; defaultnya adalah 'weave'.

18

CWEAVE

Program untuk menerjemahkan C Web ke TeX; defaultnya adalah `cweave '.

19

TANGLE

Program untuk menerjemahkan Web ke dalam Pascal; defaultnya adalah 'kusut'.

20

CTANGLE

Program untuk menerjemahkan C Web ke C; defaultnya adalah `ctangle '.

21

RM

Perintah untuk menghapus file; defaultnya adalah `rm -f '.

Berikut adalah tabel variabel yang nilainya merupakan argumen tambahan untuk program di atas. Nilai default untuk semua ini adalah string kosong, kecuali dinyatakan lain.

Sr.No. Variabel & Deskripsi
1

ARFLAGS

Bendera untuk memberikan program pemeliharaan arsip; defaultnya adalah `rv '.

2

ASFLAGS

Tanda tambahan untuk diberikan kepada assembler ketika secara eksplisit dipanggil pada file `.s 'atau` .S'.

3

CFLAGS

Tanda tambahan untuk diberikan ke kompilator C.

4

CXXFLAGS

Tanda tambahan untuk diberikan ke kompilator C.

5

COFLAGS

Bendera ekstra untuk diberikan ke program bersama RCS.

6

CPPFLAGS

Tanda tambahan untuk diberikan ke praprosesor C dan program yang menggunakannya (seperti kompiler C dan Fortran).

7

FFLAGS

Tanda tambahan untuk diberikan ke kompilator Fortran.

8

GFLAGS

Bendera ekstra untuk diberikan ke program get SCCS.

9

LDFLAGS

Tanda tambahan untuk diberikan kepada kompiler ketika mereka seharusnya memanggil linker, `ld '.

10

LFLAGS

Bendera ekstra untuk diberikan kepada Lex.

11

YFLAGS

Extra flags to give to Yacc.

12

PFLAGS

Extra flags to give to the Pascal compiler.

13

RFLAGS

Extra flags to give to the Fortran compiler for Ratfor programs.

14

LINTFLAGS

Extra flags to give to lint.

NOTE − You can cancel all variables used by implicit rules with the '-R' or '--no-builtin-variables' option.

You can also define macros at the command line as shown below −

make CPP = /home/courses/cop4530/spring02