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 `=')
후문이 계속되다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows용 GNU Make에서 PowerShell을 사용하는 방법Windows용 GNU Make를 설치하고 기본 설정으로 실행하면 쉘이 명령 프롬프트(cmd.exe)로 실행됩니다. 어떻게 해서 Windows PowerShell (powershell.exe)로 변경할 수 없는지 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.