0
* .s 파일을 입력 파일로, 확장명을 출력 파일로 삭제하려고합니다. ($basename ...)
과 즉각적인 바인딩을 사용할 수 있다고 생각했지만 작동하지 않습니다. 내 최소한의 예 :Makefile : immedate가 지연 평가 되었습니까?
INPUT := *.s
OUTPUT := $(basename $(INPUT))
all:
echo 'input:' $(INPUT)
echo 'output:' $(OUTPUT)
실행
echo 'input:' *.s
input: hello.s int3.s
echo 'output:' *
output: Makefile int3 hello hello.o hello.s int3.s
내가
:=
즉각적인 평가를 강제 것이라고 생각 발생하지만, 실제로 게으른 바인딩을 할 것, 그리고베이스 이름이 ".S"를 제거합니다 로부터 "*". 따라서 디렉토리의 모든 파일이 생성됩니다. 이 확장 프로그램이 제거 된 .s 파일을 내게 제공하는 방법은 무엇입니까?
INPUT := *.s
로 :
INPUT := $(wildcard *.s)
*.s
의 첫 번째 원인을 즉시 할당 INPUT
에, 당신이 이 원하지 않는
따라서는'경우 : = ''이 *을 평가하는 '의미하지는 않습니다, 어떻게'='연산자에서이 다르다 ? – Ant6n
@ Ant6n 안녕하세요. 업데이트를 참조하십시오. –