recursive의 경우 병렬화 가능성을 테스트하는 동안 make
패턴 규칙에서 이상한 동작을 발견했습니다.
Makefile
:
## prepare the dir structure
# mkdir -p bs{1,2,3}
# for i in 1 2 3; do ln -s ../Makefile bs$i ; done
aaa:
@echo $(CURDIR)
sleep 1
s: bs1 bs2 bs3
true
## alt1
bs1 bs2 bs3: ; +make -C $@ aaa
## alt2
#bs%: ; +make -C $@ aaa
.PHONY: s bs1 bs2 bs3
대상을 지정하는 방법 두 가지 대안이 있습니다 중 하나를 그대로 레시피에있는 모든 대상 목록 ALT1을 - bs1 bs2 bs3
- 또는 사용 %
패턴, ALT2을 - bs%
.
내가 실행하면 make -j s
와 ALT1 , 그것은 예상대로 작동합니다.
내가로 전환한다면 ALT2 (ALT1 규칙, ALT2 규칙에 주석으로 주석)의 make -j s
실행 만 true
, 조용히은 필수 무시 bs1
, bs2
그리고 bs3
목표를.
마찬가지로,와 ALT1 , make bs1
함께있는 동안, 하위 메이크업을 호출 ALT2 , make bs1
말한다 Nothing to be done for 'bs1'.
와 트릭 .force
더미 대상이 동작을 변경하지 않았다.
왜?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다