나는 이 Makefile을 가지고 있습니다:
P5.obj P5.sym: P5.asm
lc3as P5.asm
P5.obj 또는 P5.sym이 오래된 경우 어셈블러가 실행되기를 원합니다. 그러나 P5.sym을 삭제해도 다시 생성되지는 않습니다.
내가 뭘 잘못했나요?
답변1
( lc3as P5.asm
파일이 생성되고 P5.obj
실행 P5.sym
을 시도한다고 가정합니다 make
.)
기본 대상은 지정하지 않는 한 첫 번째 대상입니다(make-dialect에 따라 다름).
예를 들어:
# Makefile
a b:
echo a > a
echo b > b
실행하면 make
이 두 파일이 생성 a
됩니다 b
. 제거 b
하고 실행하는 경우 make
:
`a' is up to date.
a
대상이 기본값이기 때문입니다 .
일반적인 해결책은 all
다음으로 시작하는 이름을 가진 대상을 생성하는 것입니다 Makefile
.
all: a b
a b:
echo a > a
echo b > b
.PHONY: all
이 경우 삭제되면 다시 생성 b
됩니다 make
(기본 대상은 이고 all
해당 종속 항목은 이기 때문입니다 ).a
b
답변2
종속성은 일반적으로 규칙 이름 뒤에 오지만 귀하의 질문에서 입력이 무엇인지, 출력이 무엇인지 명확하지 않습니다. lc3as P5.asm
가 출력으로 생성되고 모든 , 및 P5
에 따라 결정된다고 가정하면 항목은 다음과 같습니다.P5.asm
P5.obj
P5.sym
P5: P5.asm P5.obj P5.sym
lc3as P5.asm