我想在构建过程中检查是否在Windows中安装了GIT,然后再对其进行处理。所以,这个想法是
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,我只想检查"识别"关键字。
当然它没有用,因为我意识到我必须检查退出状态,我在this帖子中读到了。
我使用cs-make 3.81,这就是为什么我首先生成一个文件。 我意识到可能是"很好"这样做的方式并不存在......而且,我对这个东西比较新,这是我的第一篇文章,所以要温柔。 谢谢!
答案 0 :(得分:0)
我认为GIT_PRESENT := $(shell git --help >nul 2>&1 & if %errorlevel% equ 0 ( echo GIT_PRESENT )
会在找到git时将GIT_PRESENT
变量设置为“GIT_PRESENT”(在默认的%PATH%中,如果它不在%PATH中,则在调用中使用显式路径%)。
答案 1 :(得分:0)
好的,这就是我在Etan的慷慨帮助下做的事情:
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运行的先决条件