我使用的是macOS操作系统&在我安装了g++的终端中,当我试图编译我的c++程序文件时,它有单独的编译;出现以下错误消息:
main.cpp:3:10: fatal error: 'Item.h' file not found
#include "Item.h"
^~~~~~~~
1 error generated.
g++ main.cpp -std=c++11
我假设我必须编译其他程序。一个是头程序,它有一个声明的类,在另一个.cpp程序中,它在头程序中定义类。抱歉,如果这个解释写得不好或不理解,我有很大的麻烦继续我的编程之旅,所以如果有什么你不能理解在这篇文章请留下评论。我将尽力向您解释这个问题,谢谢。
如果Item.h
不在当前目录中,则需要在g++
命令中指定包含它的目录作为包含目录。例如,如果您的文件夹结构是:
.
├── headers
│ └── Item.h
├── items.cpp
└── main.cpp
那么你的g++命令应该是
g++ -o main.o -std=c++11 -Iheaders -c main.cpp
g++ -o items.o -std=c++11 -Iheaders -c items.cpp
g++ -o program items.o main.o
请注意,使用单独的翻译单元(cpp文件),您需要首先将每个翻译单元编译为一个目标文件(.o
文件,这是-c
选项所做的),然后用最后一个命令将它们链接在一起。
或者,使用少量的翻译单元,您可以一步编译并链接它们:
g++ -o program -Iheaders -std=c++11 main.cpp items.cpp
如果你有很多翻译单元,我绝对建议你设置一个Makefile
或其他形式的构建系统。