I’m not familiar with cmake, but for gnu make, one possible hack would be:
clean: check_clean
check_clean:
@echo -n "Are you sure? [y/N] " && read ans && [ $${ans:-N} = y ]
.PHONY: clean check_clean
If check_clean fails (user does not type in y), then make will exit with an error before performing the clean.