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

Makefile引用父目录文件时报错找不到common/info.h如何解决?

问题原因

你的配置有两个核心错误:

  1. 路径拼接错误
    -I$(INC_DIR)../中$(INC_DIR)取值为src/common,替换后实际参数为-Isrc/common../,shell会将其拆分为两个独立参数:-Isrc/common和../,相当于你添加了两个完全不符合预期的头文件搜索路径。
  2. 搜索路径逻辑错误
    你的util.h中用的是#include "common/info.h"写法,编译器会从配置的搜索路径下拼接common/info.h查找文件,因此需要把common目录的父目录加入搜索路径,而不是common目录本身。

你执行make的工作目录是prog/test/perf/,复制后的common目录位于prog/test/src/下,对应common的父目录相对路径为../src,你配置的两个搜索路径都找不到对应文件。

修复方案

直接调整Makefile的头文件搜索路径配置即可:

INC_DIR = ../src
DFLAGS  = -MT $@ -MD -MP -MF $(O)/$*.d
CFLAGS  = -Wall -Werror $(OPT) $(STD) -I$(INC_DIR)

额外优化建议

你不需要把公共代码复制到test目录下,直接引用项目根目录的公共文件即可,避免后续修改公共代码时两边同步冗余,配置可以改成:

# 直接指向项目根目录下的src,不需要复制公共代码
INC_DIR = ../../src
DFLAGS  = -MT $@ -MD -MP -MF $(O)/$*.d
CFLAGS  = -Wall -Werror $(OPT) $(STD) -I$(INC_DIR)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:48:04