프로그램

make 관련 자주 찾아보는 기능 정리

(주)CKBcorp., 2022. 2. 14. 14:01
반응형

 


$@ : 목표 이름
$* : 목표 이름에서 확장자가 없는 이름
$< : 첫 번째 전제 조건의 파일 이름
$? : 목표 파일 보다 더 최근에 갱신된 파일 이름
$^: 현재 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 명령에 대한 결과가 변수에 들어감

 

 

 

반응형