/ / Как да проверя изходното състояние на извикване на Makefile cmd.exe? прозорци, makefile

Как да проверя изходното състояние на извикване на cmd.exe на Makefile? прозорци, makefile

Искам да проверя дали GIT е инсталиран в Windows по време на изграждането ми процес и по-късно се обработват по отношение на това. И така, идеята беше

check_git:
git  > gitcheck

GIT_PRESENT = $(shell type gitcheck)

ifeq ($(findstring recognized, $(GIT_PRESENT)), recognized)
#do nasty stuff
else
#do other stuff
endif

защото cmd.exe казва:

Git не се признава за вътрешна или външна команда, операционна програма или партиден файл.

ако Git не е инсталиран, и аз просто исках да проверя за "разпознати" ключова дума.

Разбира се, че не работи, защото разбрах, че трябва да проверя за изходния статус, който четох това нишка.

Използвам cs-make 3.81, затова генерирам файл първо. Аз осъзнавам, че вероятно "хубавият" начин да направите това не съществува ... Също така, аз съм сравнително нова към тези неща и това е първият ми пост, за да бъда нежен. Благодаря!

Отговори:

0 за отговор № 1

аз вярвам GIT_PRESENT := $(shell git --help >nul 2>&1 & if %errorlevel% equ 0 ( echo GIT_PRESENT ) ще настрои GIT_PRESENT променлива към "GIT_PRESENT", когато се намери git (в% PATH% по подразбиране, използвайте изричен път в обаждането, ако не е в% PATH%).


0 за отговор № 2

Добре, така че ето какво направих със щедрата помощ от Етан:

GIT_PRESENT := $(findstring Git, $(subst ,$(space),$(shell echo %path%)))

ifeq ($(GIT_PRESENT),Git)
git_info = Git detected!
ver_num = $(lastword $(shell git tag))
# and more nasty business...
else
git_info = Git not detected! Values below set to default.
ver_num  := 0.00.000
# and even more nasty business...
endif

Разбира се, Git трябва да бъде включен в% path%, но все пак това е предпоставка за Git да работи от Windows cmd.exe