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