【发布时间】:2014-08-28 13:17:37
【问题描述】:
我想在构建过程中检查 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,我只是想检查一下“recognized”关键字。
当然它不起作用,因为我意识到我必须检查退出状态,这是我在this 线程中读到的。
我正在使用 cs-make 3.81,这就是我首先生成文件的原因。 我意识到可能不存在这样做的“好”方式......另外,我对这些东西比较陌生,这是我的第一篇文章,所以要温柔。 谢谢!
【问题讨论】:
-
您是试图控制基于此的目标规则行为还是基于此的实际制造级行为?
-
我想生成一些状态标志,我将它们集成到我的源代码中,例如如果存在 GIT,则此标志将进入我的结构之一:' -D'GIT_FLAG=$(FLAG)' '
-
那么那是根据 git 的存在进行级别更改吗?设置 make 变量以供以后使用?
-
是的,看起来是这样!抱歉,我在理解您的语义时遇到了一些问题,因为我对此比较陌生,而且英语不是我的母语。
-
试试
GIT_PRESENT := $(shell git --help >nul 2>&1 & if %errorlevel% equ 0 ( echo GIT_PRESENT )看看是否适合你。当 git 存在时,应该将$(GIT_PRESENT)设置为GIT_PRESENT,否则将其留空。如果 git 不在您的%PATH%中,那么您需要将路径放在该命令行上。