Я сделал следующий make-файл
.PHONY: check
check:
@[ -f `which cmake` ] || $(error Install cmake first)
.PHONY: check2
check2:
@[ -f `which cmake` ] || echo "Install cmake first"
.PHONY: exec
exec: check
@echo "Compiling executable ..."
@[ -d ./build ] || mkdir ./build
@cd ./build; cmake ../src; make
В то время как цель check2 работает (когда cmake существует, я не получаю сообщение «Сначала установите cmake», когда нет, я получаю сообщение), target check всегда выходить, даже если cmake существует.
Так что я не могу использовать цель , проверьте для цели exec . Я должен использовать target check2 и, конечно, make завершает работу, потому что не находит cmake.
Я бы хотел, чтобы make завершил работу, прежде чем он начнет выводить "Компилируемый исполняемый файл ...".