2012-06-25 2 views
8

makefile 튜토리얼에서 다음 줄을 찾았지만 굵은 줄에 약간의 문제가 있습니다. 1 줄에메이크 파일에서 와일드 카드는 무엇을 의미합니까?

, 나는 그것이 작동하지 않습니다

program_C_SRCS:=$(*.c) 

를 작성하는 경우. 그러니 여기에 와일드 카드 단어가 무엇인지 말해주세요. 이 단어는 메이크 파일에만 국한되어 있습니까?

튜토리얼에서는 두 번째 줄이 테스트 대체를 수행 할 것이라고 기록되어 있습니다. 누구든지이 텍스트 대체에 대해 나에게 뭔가를 말해 줄 수 있습니까?

필자의 질문이 매우 원시적이라면 실례합니다.

CC:=g++ 
program_NAME:=myprogram 
**program_C_SRCS:=$(wildcard *.c)** # 1 line 
program_CXX_SRCS:=$(wildcard *.cc) 
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line 
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o) 
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ) 

답변

10

link of tutorial

는 두 개의 소스 파일이 있다고 가정하자. foo.cbar.c.

program_C_SRCS:=$(wildcard *.c) # 1 line 

wildcard 기능은 Make 구문입니다. 변수 program_C_SRCS은 이제 foo.c bar.c 값을 갖습니다 (그 순서가 아닐 수도 있음).

program_C_OBJ:=$(program_C_SRCS:.c=.o) # 2 line 

이것은 substitution reference입니다. 텍스트를 변환하여 하나의 하위 문자열을 다른 문자로 대체합니다. 변수 program_C_OBJ의 값은 foo.o bar.o입니다.

1

make 파일에서 와일드 카드 기능의 사용은 특정 확장자를 가진 모든 소스 파일을 나열하는 것입니다.

program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c)) 
예를 들어 : 당신은 다음 구문이 유용 할 수 있습니다 .o 파일 .c 파일을 변환하려면

program_C_SRCS:=$(*.c) // In this the variable program_C_SRCS will have all the files with ".c" extension. 

는 가정

관련 문제