Gnu make GNU使两个变量有条件
我有两个看起来相同的变量,但是,我的gnu make比较并没有像预期的那样工作 下面是一个简单的实验: 生成文件Gnu make GNU使两个变量有条件,gnu-make,Gnu Make,我有两个看起来相同的变量,但是,我的gnu make比较并没有像预期的那样工作 下面是一个简单的实验: 生成文件 test: $(eval $@_VER := $(shell aws elasticbeanstalk describe-application-versions \ --application-name $(APP_NAME) \ --version-label $(NEW_VERSION) \ --query "ApplicationVersion
test:
$(eval $@_VER := $(shell aws elasticbeanstalk describe-application-versions \
--application-name $(APP_NAME) \
--version-label $(NEW_VERSION) \
--query "ApplicationVersions[*].VersionLabel" \
--output=text))
@echo $($@_VER)
@echo $(NEW_VERSION)
ifeq ($(NEW_VERSION), $($@_VER))
$(warning Version $($@_VER) already exists, skipping creating a new version.)
endif
以及输出:
$ make test
7aeaec70b9a2820fde0f3b88ea40c4557b1ad42a
7aeaec70b9a2820fde0f3b88ea40c4557b1ad42a
您可以看到两个变量看起来相同,但我希望在输出中显示警告消息。我还尝试过删除whit空格,例如$(strip$($@\u VER))
问:我需要做什么才能使有条件工作?ifeq不是定义了
$@
的配方的一部分,而是一个新的顶级产品。因此,$@
不再解析为目标名称
无论如何,您似乎想要的是一个简单的shell比较
:
@echo $($@_VER)
@echo $(NEW_VERSION)
if [ "$(NEW_VERSION)" = "$($@_VER)" ]; then \
echo "Version $($@_VER) already exists, skipping" >&2; \
false; fi