이것이 메이크 파일이다.
.PHONY: all target1 target2 target
all: target1 target2
target1: NUM = 1
target2: NUM = 2
target1 target2: target
target:
@echo "this is target ${NUM}"
출력은 다음과 같습니다
this is target 1
왜 첫 번째 전제조건만 실행되나요? 변수와 관련이 있는 것 같아요. 감사해요!
답변1
Makefile 콘텐츠는 다음과 같습니다.
- 모든 골은 가짜다(즉디스크의 아티팩트와 일치하지 않습니다.)
all
target1
및 에 의존하며target2
첫 번째 대상이므로 기본 대상입니다.target1
1로 설정NUM
(사용타겟별 변수 할당);target2
NUM
2로 설정 ;target1
둘 다target2
다음에 의존합니다target
.target
주어진 명령을 실행하여 만족해야 합니다echo
.
이러한 정의를 사용하여 실행하면 make
다음과 같은 결과가 생성됩니다.
all
그것은 거짓이고 요구하기 때문에 불만족스럽target1
습니다target2
.target1
false이고 필수이므로 만족되지 않습니다target
(NUM
1로 설정).target
거짓이고 전제 조건이 없기 때문에 만족스럽지 않으면 명령을make
실행하십시오 .echo
target2
가품이라 만족스럽지 않지만,target
처리되어서 아무 일도 일어나지 않아서 만족스럽습니다.
여기서 수행하려는 것처럼 대상을 함수로 사용할 수 없습니다. 일부 Make 구현은 지원합니다.기능, 하지만 다음은 필요하지 않습니다.
target1 target2:
@echo "this is target ${NUM}"