我一直在学习 c++ 并遇到以下问题:我有一个目录结构,如:
- current directory
- Makefile
- include
- header.h
- src
- main.cpp
我的 header.h :
#include <iostream>
using namespace std;
void print_hello();
我的 main.cpp:
#include "header.h"
int main(int argc, char const *argv[])
{
print_hello();
return 0;
}
void print_hello()
{
cout<<"hello world"<<endl;
}
我的Makefile:
CC = g++
OBJ = main.o
HEADER = include/header.h
CFLAGS = -c -Wall
hello: $(OBJ)
$(CC) $(OBJ) -o $@
main.o: src/main.cpp $(HEADER)
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf *o hello
make 的输出是:
g++ -c -Wall src/main.cpp -o main.o src/main.cpp:1:20:致命错误:header.h:没有此类文件或目录编译终止。 Makefile:10:目标“main.o”的配方失败 make:*** [main.o] 错误 1
我在这里犯了什么错误。这令人沮丧。非常感谢任何建议!
原文由 J. Lin 发布,翻译遵循 CC BY-SA 4.0 许可协议
您告诉 Makefile 必须存在
include/header.h
,并且您告诉 C++ 源文件它需要header.h
…但您没有告诉编译器这些头文件所在的位置(即在“包括”目录)。做这个: