Makefile - Makrolar

makeprogram, değişkenlere benzer makroları kullanmanıza izin verir. Makrolar bir Makefile'da = çiftleri olarak tanımlanır. Aşağıda bir örnek gösterilmiştir -

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

Özel Makrolar

Bir hedef kural kümesinde herhangi bir komut vermeden önce, önceden tanımlanmış belirli özel makrolar vardır -

  • $ @, yapılacak dosyanın adıdır.

  • $? , değişen bağımlıların isimleridir.

Örneğin, aşağıdaki gibi bir kural kullanabiliriz -

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

Bu örnekte $ @, merhaba ve $? veya $ @. cpp tüm değiştirilen kaynak dosyalarını alır.

Örtük kurallarda kullanılan iki özel makro daha vardır. Onlar -

  • $ <eyleme neden olan ilgili dosyanın adı.

  • $ * hedef ve bağımlı dosyalar tarafından paylaşılan önek.

.Cpp (kaynak dosyalar) dışında .o (nesne) dosyalarının oluşturulması için ortak örtük kural vardır.

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

Alternatively:

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

Geleneksel Makrolar

Çeşitli varsayılan makrolar vardır. Varsayılanları yazdırmak için "make -p" yazarak bunları görebilirsiniz. Çoğu, kullanıldıkları kurallardan oldukça açıktır.

Bu önceden tanımlanmış değişkenler, yani örtük kurallarda kullanılan makrolar iki sınıfa ayrılır. Bunlar aşağıdaki gibidir -

  • Programların adı olan makrolar (CC gibi)

  • Programların bağımsız değişkenlerini içeren makrolar (CFLAGS gibi).

Makefile dosyalarının yerleşik kurallarında program adları olarak kullanılan bazı ortak değişkenlerin bir tablosu aşağıdadır -

Sr.No Değişkenler ve Açıklama
1

AR

Arşiv koruma programı; varsayılan "ar" dır.

2

AS

Montaj dosyalarını derleme programı; varsayılan "as" dır.

3

CC

C programlarını derleme programı; varsayılan "cc" dir.

4

CO

RCS'deki dosyaları teslim alma programı; varsayılan "co" dur.

5

CXX

C ++ programlarını derlemek için program; varsayılan "g ++" dır.

6

CPP

C ön işlemcisini çalıştırma programı, sonuçları standart çıktı elde edecek şekilde; varsayılan "$ (CC) -E" dir.

7

FC

Fortran ve Ratfor programlarını derleme veya ön işleme programı; varsayılan "f77" dir.

8

GET

SCCS'den bir dosya çıkarma programı; varsayılan "get" dir.

9

LEX

Lex gramerlerini kaynak koduna dönüştürmek için kullanılacak program; varsayılan "lex" dir.

10

YACC

Yacc gramerlerini kaynak koduna dönüştürmek için kullanılacak program; varsayılan "yacc" dir.

11

LINT

Kaynak kodu üzerinde lint çalıştırmak için kullanılacak program; varsayılan "lint" dir.

12

M2C

Modula-2 kaynak kodunu derlemek için kullanılacak program; varsayılan "m2c" dir.

13

PC

Pascal programlarını derlemek için program; varsayılan "pc" dir.

14

MAKEINFO

Bir Texinfo kaynak dosyasını bir Bilgi dosyasına dönüştürme programı; varsayılan 'makeinfo'dur.

15

TEX

TeX kaynağından TeX dvi dosyaları yapmak için program; varsayılan "tex" dir.

16

TEXI2DVI

TeX dvi dosyalarını Texinfo kaynağından yapma programı; varsayılan "texi2dvi" dir.

17

WEAVE

Web'i TeX'e çevirme programı; varsayılan "örgü" dür.

18

CWEAVE

C Web'i TeX'e çevirme programı; varsayılan `` mağara '' dır.

19

TANGLE

Web'i Pascal'a çevirme programı; varsayılan "arapsaçı" dır.

20

CTANGLE

C Web'i C'ye çevirme programı; varsayılan, ctangle'dır.

21

RM

Bir dosyayı kaldırma komutu; varsayılan "rm -f" dir.

Aşağıda, değerleri yukarıdaki programlar için ek bağımsız değişkenler olan değişkenlerin bir tablosu verilmiştir. Bunların tümü için varsayılan değerler, aksi belirtilmedikçe boş dizedir.

Sr.No. Değişkenler ve Açıklama
1

ARFLAGS

Arşiv koruma programını verecek bayraklar; varsayılan "rv" dir.

2

ASFLAGS

Bir ".s 'veya" .S' dosyasında açıkça çağrıldığında assembler'a verilecek ekstra bayraklar.

3

CFLAGS

C derleyicisine verilecek ekstra işaretler.

4

CXXFLAGS

C derleyicisine verilecek ekstra işaretler.

5

COFLAGS

RCS ortak programına verilecek ekstra işaretler.

6

CPPFLAGS

C ön işlemcisine ve onu kullanan programlara (C ve Fortran derleyicileri gibi) verilecek ekstra işaretler.

7

FFLAGS

Fortran derleyicisine verilecek ekstra işaretler.

8

GFLAGS

SCCS get programına verilecek ekstra işaretler.

9

LDFLAGS

Bağlayıcıyı (ld) çağırmaları gerektiğinde derleyicilere verilecek ekstra bayraklar.

10

LFLAGS

Lex'e verilecek ekstra bayraklar.

11

YFLAGS

Yacc'a verilecek ekstra bayraklar.

12

PFLAGS

Pascal derleyicisine verilecek ekstra işaretler.

13

RFLAGS

Ratfor programları için Fortran derleyicisine verilecek ekstra işaretler.

14

LINTFLAGS

Tüy bırakacak ekstra bayraklar.

NOTE - Örtük kurallar tarafından kullanılan tüm değişkenleri '-R' veya '- yerleşik değişken yok' seçeneğiyle iptal edebilirsiniz.

Makroları aşağıda gösterildiği gibi komut satırında da tanımlayabilirsiniz -

make CPP = /home/courses/cop4530/spring02