Makefile 包含文件时出现 No such file or directory 错误

问题描述 投票:0回答:1

当我尝试使用 Makefile 构建我的 C++ 项目时遇到了一些问题。然后我发现发生了什么。 例如,有三个文件: main.ccbar1bar2Makefile

main.cc

#include <iostream>
#include "a/a/bar2"

using namespace std;
int main(){
    cout<<which()<<endl;
    return 0;
}  

栏1

#include <iostream>
using namespace std;

cout<<"bar1"<<endl;  

酒吧2

#include <iostream>
#include "a/bar1"
using namespace std;
void which(){
     cout<<"bar2"<<endl;
}

生成文件

comeon:
    g++ -Ia -Ia/a main.C

它们被保存在磁盘上,如下所示:

<Myproject>
|-main.cc
|-Makefile
|-<a>
  |-bar1
  |-<a>
     |-bar2

当我尝试构建这样的项目时:

I:\Myproject\>make

我收到错误:

g++ -Ia -Ia/a main.cc
在 main.cc 包含的文件中:2:0:
a/a/bar2:2:18:致命错误:a/bar1:没有这样的文件或目录
编译终止。
make: * [来吧]错误1

我改变了

#include "a/a/bar2"

#include "a/bar1"

在main.cc文件中

添加

#include "a/a/bar2"

在 bar1 文件中

当然删掉

#include "a/bar1"

在 bar2 文件中,并且 执行命令

make

然后我得到以下错误:

在 main.C:2:0: 包含的文件中
a/bar1:2:20:致命错误:a/a/bar2:没有这样的文件或目录
编译终止。
make: * [来吧] 错误 1

将此错误信息与前面提到的另一个错误信息进行比较,我认为编译器实际上可以找到 bar1 和 bar2 文件(编译 bar1bar2 文件时发生错误),但编译器不知何故找不到另一个包含文件编译 main.cc 包含的文件时的文件。

那么,如何解决这个问题呢?谢谢! ^-^

c++ makefile g++ gnu-make
1个回答
0
投票

看起来

bar2
中的包含正在寻找
bar1
在这里:

<Myproject>
|-main.cc
|-Makefile
|-<a>
  |-bar1
  |-<a>
     |-bar2
     |-<a>
        |-bar1

如果将

#include "a/bar1"
中的
bar2
更改为
#include "../bar1"
,它将改为在
bar2

的父目录中查找
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.