Makefile-매크로
그만큼 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) [email protected] $(LDFLAGS) -o $@
이 예에서 $ @는 hello 및 $?를 나타냅니다 . 또는 $ @. cpp는 변경된 모든 소스 파일을 선택합니다.
암시 적 규칙에 사용되는 특수 매크로가 두 개 더 있습니다. 그들은-
$ <조치를 발생시킨 관련 파일의 이름입니다.
$ * 대상 및 종속 파일이 공유하는 접두사.
일반적인 암시 적 규칙은 .cpp (소스 파일)에서 .o (객체) 파일을 구성하는 것입니다.
.cpp.o:
$(CC) $(CFLAGS) -c $<
Alternatively:
.cpp.o:
$(CC) $(CFLAGS) -c $*.c
기존 매크로
다양한 기본 매크로가 있습니다. 기본값을 인쇄하려면 "make -p"를 입력하여 볼 수 있습니다. 대부분은 사용되는 규칙에서 매우 분명합니다.
이러한 미리 정의 된 변수, 즉 암시 적 규칙에 사용되는 매크로는 두 가지 클래스로 나뉩니다. 그들은 다음과 같습니다-
프로그램 이름 인 매크로 (예 : CC)
프로그램의 인수를 포함하는 매크로 (예 : CFLAGS).
아래는 makefile의 내장 규칙에서 프로그램 이름으로 사용되는 몇 가지 공통 변수의 표입니다.
Sr. 아니요 | 변수 및 설명 |
---|---|
1 | AR 아카이브 유지 프로그램; 기본값은 'ar'입니다. |
2 | AS 어셈블리 파일을 컴파일하는 프로그램; 기본값은 'as'입니다. |
삼 | CC C 프로그램을 컴파일하는 프로그램; 기본값은 'cc'입니다. |
4 | CO RCS에서 파일을 체크 아웃하는 프로그램; 기본값은 'co'입니다. |
5 | CXX C ++ 프로그램을 컴파일하는 프로그램; 기본값은`g ++ '입니다. |
6 | CPP 표준 출력에 대한 결과와 함께 C 전처리기를 실행하는 프로그램. 기본값은`$ (CC) -E '입니다. |
7 | FC Fortran 및 Ratfor 프로그램을 컴파일하거나 전처리하는 프로그램 기본값은 'f77'입니다. |
8 | GET SCCS에서 파일을 추출하는 프로그램; 기본값은 'get'입니다. |
9 | LEX Lex 문법을 소스 코드로 바꾸는 데 사용하는 프로그램; 기본값은`lex '입니다. |
10 | YACC Yacc 문법을 소스 코드로 바꾸는 데 사용할 프로그램 기본값은`yacc '입니다. |
11 | LINT 소스 코드에서 Lint를 실행하는 데 사용할 프로그램입니다. 기본값은`lint '입니다. |
12 | M2C Modula-2 소스 코드를 컴파일하는 데 사용할 프로그램 기본값은 'm2c'입니다. |
13 | PC 파스칼 프로그램 컴파일 프로그램; 기본값은 'pc'입니다. |
14 | MAKEINFO Texinfo 소스 파일을 Info 파일로 변환하는 프로그램; 기본값은`makeinfo '입니다. |
15 | TEX TeX 소스에서 TeX dvi 파일을 만드는 프로그램; 기본값은 'tex'입니다. |
16 | TEXI2DVI Texinfo 소스에서 TeX dvi 파일을 만드는 프로그램; 기본값은`texi2dvi '입니다. |
17 | WEAVE 웹을 TeX로 번역하는 프로그램; 기본값은 'weave'입니다. |
18 | CWEAVE C Web을 TeX로 번역하는 프로그램; 기본값은 'cweave'입니다. |
19 | TANGLE 웹을 파스칼로 번역하는 프로그램; 기본값은`tangle '입니다. |
20 | CTANGLE C Web을 C로 번역하는 프로그램; 기본값은 'ctangle'입니다. |
21 | RM 파일을 제거하는 명령; 기본값은 'rm -f'입니다. |
다음은 위의 프로그램에 대한 추가 인수 값을 갖는 변수 테이블입니다. 별도로 언급하지 않는 한 이들 모두의 기본값은 빈 문자열입니다.
Sr. 아니. | 변수 및 설명 |
---|---|
1 | ARFLAGS 아카이브 유지 프로그램을 제공하는 플래그; 기본값은`rv '입니다. |
2 | ASFLAGS `.s '또는`.S'파일에서 명시 적으로 호출 될 때 어셈블러에 제공 할 추가 플래그. |
삼 | CFLAGS C 컴파일러에 제공 할 추가 플래그입니다. |
4 | CXXFLAGS C 컴파일러에 제공 할 추가 플래그입니다. |
5 | COFLAGS RCS co 프로그램에 제공 할 추가 플래그입니다. |
6 | CPPFLAGS 이를 사용하는 C 전 처리기 및 프로그램 (예 : C 및 Fortran 컴파일러)에 제공 할 추가 플래그. |
7 | FFLAGS Fortran 컴파일러에 제공 할 추가 플래그입니다. |
8 | GFLAGS SCCS get 프로그램에 제공 할 추가 플래그입니다. |
9 | LDFLAGS 링커`ld '를 호출해야 할 때 컴파일러에 제공 할 추가 플래그. |
10 | LFLAGS Lex에게 줄 추가 플래그. |
11 | YFLAGS Yacc에 제공 할 추가 플래그입니다. |
12 | PFLAGS 파스칼 컴파일러에 제공 할 추가 플래그입니다. |
13 | RFLAGS Ratfor 프로그램 용 Fortran 컴파일러에 제공 할 추가 플래그입니다. |
14 | LINTFLAGS 보푸라기에 줄 추가 플래그. |
NOTE − '-R'또는 '--no-builtin-variables'옵션을 사용하여 암시 적 규칙에서 사용하는 모든 변수를 취소 할 수 있습니다.
다음과 같이 명령 줄에서 매크로를 정의 할 수도 있습니다.
make CPP = /home/courses/cop4530/spring02