GNU make manual 번역(806)

6015 단어 Make
계속 번역
4.4.3 The Function `wildcard'                        

-----------------------------                        

                        

Wildcard expansion happens automatically in rules.  But wildcard expansion does not normally take place when a variable is set, or inside the arguments of a function.  If you want to do wildcard expansion in such places, you need to use the `wildcard' function, like  this:                        

                        

     $(wildcard PATTERN...)                        

                        

This string, used anywhere in a makefile, is replaced by a space-separated list of names of existing files that match one of the given file name patterns.  If no existing file name matches a pattern,then that pattern is omitted from the output of the `wildcard' function.  Note that this is different from how unmatched wildcards

behave in rules, where they are used verbatim rather than ignored (*note Wildcard Pitfall::).                        

                        

   One use of the `wildcard' function is to get a list of all the C source files in a directory, like this:                        

                        

     $(wildcard *.c)                        

                        

   We can change the list of C source files into a list of object files by replacing the `.c' suffix with `.o' in the result, like this:                        

                        

     $(patsubst %.c,%.o,$(wildcard *.c))                          

(Here we have used another function, `patsubst'.  *Note Functions for String Substitution and Analysis: Text Functions.)                        

                        

   Thus, a makefile to compile all C source files in the directory and then link them together could be written as follows:  

     objects := $(patsubst %.c,%.o,$(wildcard *.c))                        

                        

     foo : $(objects)                        

             cc -o foo $(objects)                        

                        

(This takes advantage of the implicit rule for compiling C programs, so 

there is no need to write explicit rules for compiling the files. *Note The Two Flavors of Variables: Flavors, for an explanation of `:=', which is a variant of `='.)                        

 
4.4.3 와일드카드 함수 ---------------------------------와일드카드 확장은 자동으로 규칙에서 발생합니다.그러나 어댑터 확장은 변수가 설정되었을 때 정상적으로 일어나지 않으며, 어댑터가 함수의 매개 변수에 있을 때 확장도 일어나지 않습니다.이 자리에서 어댑터 확장을 실행하려면 다음과 같이 와일드카드 함수를 사용해야 합니다.
$(wildcard PATTERN...) 이상의 함수 문자열은makefile 어느 곳에서든 사용할 수 있으며, 어떤 이름 모드에 부합하기만 하면 빈칸으로 구분된 존재하는 파일의 이름 목록으로 대체됩니다.패턴과 일치하는 파일이 없으면 이 모드는 생략됩니다.규칙에서 직접 어댑터를 사용할 때 일치하는 것을 찾을 수 없는 것과는 다른 행동입니다. 무시되는 것이 아니라 한 글자도 빠짐없이 남게 됩니다.(*note Wildcard Pitfall::)
와일드카드 함수에 대한 사용법은 어떤 디렉터리에 있는 모든 C 원본 프로그램의 이름 목록을 얻는 것이다
다음: $(wildcard *.c)
우리는 C 원본 프로그램 파일의 목록을 바꾸어 목표 파일의 목록으로 바꿀 수 있다. 이것은 통과해야 한다.c의 접두사를 바꿉니다.o 접미사는 다음과 같습니다.
$(patsubst%.c,%.o,$(wildcard*.c)) (여기에서 우리는 다른 함수를 사용했습니다.'patsubst'. *Note Functions for String Substitution and Analysis: Text Functions.)
따라서 우리는 디렉터리에 있는 모든 C 원본 프로그램을 makefile로 컴파일하여 다음과 같이 연결할 수 있다.
objects: = $(patsubst%.c,%.o, $(wildcard*.c)foo: $(objects)cc-o foo $(objects) (이렇게 하면 스텔스 규칙 컴파일 C 프로그램의 장점을 얻었기 때문에 컴파일 파일의 현식 규칙을 쓸 필요가 없습니다. *Note The Two Flavors of Variables: Flavors, for an explanation of `:=', which is a variant of `=')
후문이 계속되다

좋은 웹페이지 즐겨찾기