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

Makefile变量依赖执行行为异常问题求助

问题根源与解决方案

核心问题是你给变量值添加了不必要的双引号,导致Makefile识别的目标和实际生成的文件不匹配。

具体分析

  1. 第一个Makefile的问题
    你定义变量时写了:

    RESULTS_FILE = "benchmark_results"
    

    这里的变量值包含双引号,所以all目标的依赖是带引号的文件名"benchmark_results"(引号属于文件名的一部分)。但执行touch $(RESULTS_FILE)时,shell会解析掉引号,实际生成的是不带引号的文件benchmark_results。

    Makefile每次检查依赖时,都找不到名为"benchmark_results"的文件,因此会判定依赖未满足,重复执行touch命令。

  2. 第二个Makefile的逻辑
    直接用实际文件名benchmark_results作为依赖时,目标名称和实际生成的文件完全一致。第一次执行后文件存在,后续Makefile会判定依赖已满足,因此只会输出all executed。

修正后的第一个Makefile

只需去掉变量值的双引号即可:

RESULTS_FILE = benchmark_results
all: $(RESULTS_FILE)
$(RESULTS_FILE):
    touch $(RESULTS_FILE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:27:04