Makefile
종속성을 업데이트하고 컴파일하는 데 사용되는 명령을 추가하기 위해 a를 수정하고 있습니다 .
make clean
명령이 작동하고 있습니다 . 이제 다른 명령을 실행하기 전에 이를 실행하려고 합니다 make
.
추가하려고 하는데 all: clean
작동하지 않는 것 같습니다.
.PHONY: all
all: clean
.PHONY: clean
clean:
rm -rf build
update-dep:
mkdir -p build/package_name \
&& # do stuff here
다른 기능이 실행 중일 때 어떻게 깔끔하게 실행되도록 할 수 있나요?
답변1
글쎄, 당신은 종속성이 어떻게 작동하는지 알고 있다고 생각합니다. 콜론 뒤에 넣으면 됩니다. 따라서 일반적인 관용구는 all
다음과 같은 종속성을 갖는 것입니다.
all: main_program
그것의 유일한 특별한 점은첫 번째파일의 대상은 기본 대상이므로 all
Makefile 시작 부분에 명시적으로 지정하면 기본 대상을 설정할 수 있습니다.
main_program
종속성으로 추가하려면 다른 항목과 함께 나열하면 됩니다.main_program.o
clean
all: clean main_program
update_dep: clean
do stuff...
all: clean
make all
다른 종속성은 동일한 목록을 가지지 않으므로 make clean
거기에 다른 종속성을 추가할 수 있습니다.
각 실행 전에 모든 것을 정리하는 것은 여전히 좋은 생각이 아닙니다. Make의 전체적인 아이디어는 업데이트가 필요한 파일을 파악하고 업데이트에 필요한 작업만 수행한다는 것이기 때문입니다. clean
매번 실행되도록 하려면 이를 다른 모든 대상에 대한 종속성으로 명시적으로 유지해야 합니다.