`$(贝壳<command)` in makefile returns empty on Windows sometimes

问题描述 投票:0回答:0

我正在尝试运行这几行代码,以在任何配方之外的生成文件中获取 git 提交

GIT_VERSION := $(shell cd "C:\Users\made\up\filepath" && git describe --always)
$(info GIT_VERSION is '$(GIT_VERSION)')

但它总是打印

GIT_VERSION is ''

但是,如果我跑

PWD := $(shell cd "C:\Users\made\up\filepath" && pwd)
$(info PWD is $(PWD))

如我所料打印出

PWD is /cygdrive/c/Users/made/up/filepath

这使我认为 makefile 使用的 shell 有问题。

SHELL := $(shell echo $$SHELL)
给出
/bin/bash
,我注意到这与打开 git-bash shell 给我的
/usr/bin/bash
不同,虽然我不确定如何解释这个,在 Windows 上。有什么线索可以开始从
git
调用中获取一些输出吗?


更新:仍在为此苦苦挣扎。已经尝试了评论中推荐的

-C
git选项,包装在eval中,仍然没有得到
GIT_VERSION

windows git shell makefile git-bash
© www.soinside.com 2019 - 2024. All rights reserved.