You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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))

额外说明

变量定义前的缩进不会影响变量赋值的有效性,但要注意Makefile中规则的命令行必须用缩进,此处属于变量定义,因此无需调整缩进。

内容的提问来源于stack exchange,提问作者rjbstack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:43:23