여러 목표 설정

여러 목표 설정

나는 이 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해당 종속 항목은 이기 때문입니다 ).ab

답변2

종속성은 일반적으로 규칙 이름 뒤에 오지만 귀하의 질문에서 입력이 무엇인지, 출력이 무엇인지 명확하지 않습니다. lc3as P5.asm가 출력으로 생성되고 모든 , 및 P5에 따라 결정된다고 가정하면 항목은 다음과 같습니다.P5.asmP5.objP5.sym

P5: P5.asm P5.obj P5.sym
        lc3as P5.asm

관련 정보