Makefile의 내부 매크로 노트

5937 단어 makefiletech
MakeFile의 메모.$<$@의 내부 매크로/자동 변수를 자주 잊어버리기 때문이다.
웅대하다
설명
$@
대상 이름
$%
대상 구성원 이름입니다.아카이브 업데이트 등에 사용
$<
파일의 시작에 의존하는 파일 이름입니다.
$?
대상의 새 의존 파일의 파일 이름 사이에 공백을 띄워 배열합니다
$^
모든 종속 파일의 파일 이름 사이에 공백을 끼고 배열합니다.
$+
몰라.$^와의 차이점은 Makefile에 기술된 순서대로 배열되는지 여부입니다.
$*
기본 규칙에서 일치하는 어간.a.%.b 중 일치한 것은 baa/a.do.bbaa/do였다.주로 %.c 등에 쓰인다.

확인


실제로 어떤 값이 어디에 있는지 잘 모르기 때문에 확인용 메이크파일을 만들어 실행해 결과를 봤다.

hage_1 :
	-echo '$@ is ' $@
	-echo '$% is ' $%
	-echo '$< is ' $<
	-echo '$? is ' $?
	-echo '$^ is ' $^
	-echo '$+ is ' $+

hage_2 : hage1
	-echo '$@ is ' $@
	-echo '$% is ' $%
	-echo '$< is ' $<
	-echo '$? is ' $?
	-echo '$^ is ' $^
	-echo '$+ is ' $+


hage_3 : hage3 hage2 hage1
	-echo '$@ is ' $@
	-echo '$% is ' $%
	-echo '$< is ' $<
	-echo '$? is ' $?
	-echo '$^ is ' $^
	-echo '$+ is ' $+

결실


 ⚓  ~/t/MM  touch hage{1,2,3}
 ⚓  ~/t/MM  make hage_1
echo '$@ is ' hage_1
$@ is  hage_1
echo '$% is ' 
$% is 
echo '$< is '< is 
echo '$? is ' 
$? is 
echo '$^ is ' 
$^ is 
echo '$+ is ' 
$+ is 
 ⚓  ~/t/MM  make hage_2
echo '$@ is ' hage_2
$@ is  hage_2
echo '$% is ' 
$% is 
echo '$< is ' hage1
$< is  hage1
echo '$? is ' hage1
$? is  hage1
echo '$^ is ' hage1
$^ is  hage1
echo '$+ is ' hage1
$+ is  hage1
 ⚓  ~/t/MM  make hage_3
echo '$@ is ' hage_3
$@ is  hage_3
echo '$% is ' 
$% is 
echo '$< is ' hage3
$< is  hage3
echo '$? is ' hage3 hage2 hage1
$? is  hage3 hage2 hage1
echo '$^ is ' hage3 hage2 hage1
$^ is  hage3 hage2 hage1
echo '$+ is ' hage3 hage2 hage1
$+ is  hage3 hage2 hage1

참고 자료

  • GNU make Version 3.77
  • 좋은 웹페이지 즐겨찾기