Makefile中ifeq条件判断忽略首个选项,匹配第二个选项问题排查
Makefile中ifeq条件匹配失败的修复方案
问题分析
你的Makefile里,STRIPPED_HOST的值和ifeq的目标字符串看起来完全一致,但条件判断却执行了else分支,核心原因是Makefile的字符串匹配严格性:
STRIPPED_HOST的实际值不带双引号:gs6102dsc-airstestr8.gesdisc.eosdis.nasa.gov- 而
ifeq条件中写的是带双引号的字符串:"gs6102dsc-airstestr8.gesdisc.eosdis.nasa.gov"ifeq会逐字符严格比对,引号会被当作字符串的一部分,导致两者不匹配。
修复代码
移除ifeq条件中目标字符串的双引号即可:
HOST=$(shell hostname) STRIPPED_HOST=$(strip $(HOST)) # Debug: Print the retrieved and stripped hostname $(info HOST is '$(HOST)') $(info STRIPPED_HOST is '$(STRIPPED_HOST)') ... $(info PKGS_ROOT is '$(PKGS_ROOT)') ifeq ($(STRIPPED_HOST), gs6102dsc-airstestr8.gesdisc.eosdis.nasa.gov) PLTFRM_LIBS_HDF := $(PKGS_ROOT)/hdf/linux64/hdf-4.2.13/lib/libmfhdf.a $(PKGS_ROOT)/hdf/linux64/hdf-4.2.13/lib/libdf.a else PLTFRM_LIBS_HDF := $(PKGS_ROOT)/hdf-4.2.15_post0_jpl/lib/libmfhdf.a $(PKGS_ROOT)/hdf-4.2.15_post0_jpl/lib/libdf.a endif $(info PLTFRM_LIBS_HDF is $(PLTFRM_LIBS_HDF))
额外说明
变量定义前的
内容的提问来源于stack exchange,提问作者rjbstack
相关产品推荐
相关产品推荐

