다음과 같은 내용이 있습니다 Makefile
.
aaa:bbb
echo 456
bbb:
echo 123
bbb
디렉터리에 파일이 없으면 aaa
파일 유무에 관계없이 이 두 가지 규칙이 실행됩니다.
그런데 왜?
답변1
aaa
당신은 상황에 따라 다르다고 하더군요 bbb
. 이는 을 만들거나 업데이트하려면 목표를 설정해야 함을 의미 aaa
합니다 bbb
.
과 aaa
가 bbb
현재 디렉터리에 파일로 존재하고 aaa
그보다 최신이면 bbb
두 대상 모두 다시 빌드할 필요가 없지만 aaa
비교하면 더 이상 사용되지 않습니다.bbb
또는 bbb
누락된 경우그런 aaa
다음 최신 상태인지 확인하기 위해 빌드해야 합니다( bbb
손실된 경우 다시 빌드해야 함 bbb
).
다음 예에서는 두 대상이 실제로만들다관련 파일이 있는 경우 대상은 두 번째 호출에서 빌드되지 않습니다 make
. 파일이 삭제 되면 bbb
두 대상이 모두 다시 빌드됩니다.
$ cat Makefile
aaa: bbb
echo 456
touch aaa
bbb:
echo 123
touch bbb
$ rm -f aaa bbb
$ make
echo 123
123
touch bbb
echo 456
456
touch aaa
$ make
`aaa' is up to date.
$ rm bbb
$ make
echo 123
123
touch bbb
echo 456
456
touch aaa