2017-12-15 16 views
1

make clean 사용자 확인을 요구하는 명령이 있습니까? 나는 실수로 그것을 실행했고 이제는 빌드가 다시 완료되기까지 6 시간을 기다려야합니다.'make clean'을하여 확인을 요청하십시오.

Makefilecmake으로 작성되었습니다.

원하는 워크 플로우 :

> make clean 
> [make] Are you sure you want to remove all the built files? [Y/N] 
> N 
> [make] Target 'make clean' not executed. 

> make clean 
> [make] Are you sure you want to remove all the built files? [Y/N] 
> Y 
> [make] Target 'make clean' executed. 
+0

CMake는'make clean'에서 그러한 "prompt"옵션을 가지고 있지 않습니다. 그리고 * clean * target에 대한 추가 작업을 첨부 할 방법이 없다는 것을 알고 있습니다. (make clean 동작에 영향을주는 유일한 방법은 [ADDITIONAL_MAKE_CLEAN_FILES] (https://cmake.org/cmake/help/v3.9/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.html)에 파일을 추가하는 것입니다). 어떤 종류의 "prompt"를 호출하고 나서'make clean'을 호출하는 또 다른 타겟을 생성 할 수 있습니다 ('make remove'). – Tsyvarev

답변

1

내가 cmake에 익숙하지 않은 해요,하지만 GNU 만들를 들어, 하나의 가능한 해킹은 다음과 같습니다

clean: check_clean 

check_clean: 
    @echo -n "Are you sure? " && read ans && [ $$ans == y ] 

.PHONY: clean check_clean 

check_clean이 실패하면 (사용자가 y를 입력하지 않습니다), make는 정리를 수행하기 전에 오류와 함께 종료합니다.

+0

수표를 필수 조건으로 사용하는 것은 영리합니다. BASH 스크립팅을 훨씬 더 많이 사용하여 '깨끗한'규칙 레시피에서 동일한 체크를 사용할 수있는 변형이있을 수도 있습니다. 그렇게하면 다른 대상을 구축하면서 선택 사항을 깨끗하게 만들 수 있습니다. OP가 cmake를 사용하기 때문에 그는 크로스 플랫폼을 요구할 수도 있습니다 ... 그래서 BASH는 dodgy 일 수 있습니다. 어쩌면 일부 동등한 파이썬을 사용하여? – lockcmpxchg8b

+0

약간 개선 : "'@echo -n"정말인가요? [y/N] "&& ans && [$$ {ans : -N} == y"'' – adrianlzt