$@ : 목표 이름
$* : 목표 이름에서 확장자가 없는 이름
$< : 첫 번째 전제 조건의 파일 이름
$? : 목표 파일 보다 더 최근에 갱신된 파일 이름
$^: 현재 Target이 의존하는 대상들의 전체 목록
$?: 현재 Target이 의존하는 대상들 중 변경된 것들의 목록
$% : 대상의 이름 (해당 규칙 대상이 아카이브 인 경우)
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
> 오프젝트 파일이 없는 c 파일을 o 파일로 컴파일.
abc : abc1.o abc2.o
gcc $^ -o @a # abc1.o abc2.o 으로 abc 를 빌드해라.
$(wildcard 패턴 )
> 말그대로. 와일드카드 사용 가능. 실제 와일드카드( ? * ) 와 다른 점은 출력값을 문자열로 구성해 준다는 것에 있다. 즉, 리턴값이 와일드카드의 실제 결과값이라는 것.
예를 들어 aaa.c bbb.c ccc.c 가 있을 때 *.c 나 $(wildcard *.c ) 둘 다 "모든 c 파일" 을 사용하지만
1. *.c 는 문자열 리턴값이 동일하다.
-@echo "*.c"
*.c
2. $(wildcard *.c) 는 패턴에 해당하는 문자열을 배열로 리턴해준다.
-@echo "$(wildcard *.c)"
aaa.c bbb.c ccc.c
$(patsubst 찾을패턴, 변경패턴, 적용대상)
> 그냥 외우면 된다.
예: $(patsubst %.c,%.o,$(wildcard *.c)) # '.c' 접미사를 '.o'로 변경해서 오브젝트 파일들의 리스트로 변경할 수 있다
$(shell <shell-command>)
> 쉘을 실행하고 결과값을 문자열로 반환.
예 : SH = $(shell ls *.c) => shell 명령에 대한 결과가 변수에 들어감
'프로그램' 카테고리의 다른 글
postman 에서 405 Method Not Allowed 발생 (0) | 2022.04.25 |
---|---|
시리얼 통신에서, 통신속도 맞춰도 글자 깨질 때 (0) | 2022.02.14 |
missing binary operator before token ( (0) | 2022.02.10 |
정적 링크로 컴파일하면, 전체 용량이 줄어든다? (0) | 2022.02.04 |
vmware workstation player 다운로드 링크 (0) | 2022.01.10 |