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

已确认文件存在,Makefile include却提示“No such file or directory”

问题原因与解决方法

错误原因

你把include指令写在了build目标的shell命令序列里。include是GNU Make的顶层解析指令,作用是在Makefile加载阶段导入其他Makefile,而非执行目标时可运行的shell命令。当Make执行build目标的命令时,会把-include ...当成普通shell命令去执行,但系统中没有名为include的shell工具,因此报错“include: No such file or directory”。

修复后的Makefile

将-include移到Makefile的顶层(所有目标定义之外)即可:

OTHER_MAKEFILE_PATH = ./Makefile2

# 把include放在顶层,让Make在解析阶段处理
-include $(abspath $(OTHER_MAKEFILE_PATH))

.PHONY: build
build:
    @test -e $(abspath $(OTHER_MAKEFILE_PATH)) && echo "File exists" || echo "File does not exists"

额外说明

  • -include本身就具备忽略文件不存在错误的特性(前缀-用于抑制错误),因此你写的test检查其实可以省略,Make会自动处理文件不存在的情况,不会中断执行。
  • Make的include是在解析阶段处理的,而非执行阶段。如果需要在build目标执行时才加载其他Makefile,不符合Make的工作逻辑,这种场景通常需要用make -f调用子Makefile来实现,但多数情况下顶层include就足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:14:52