我正在学习在 Linux 中编写 C++,我遇到了以下问题:
我有 4 个文件:main.cpp、model.cpp、view.cpp 和 controller.cpp,每个(除了 main)都有自己的头文件。main.cpp 包括model.h、view.h 和controller.h,view.h 包括仅与它相关的其他库(运行图形库所必需的)。这些库位于不同的文件夹中,并且它们自己有其他依赖项(这就是我不想移动它们的原因)。因此,我的 makefile 如下所示:
model: model.cpp model.h
g++ -c model.cpp
view: view.cpp view.h
g++ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I.. -c view.cpp
controller: controller.cpp
g++ -c controller.cpp
main: main.cpp
g++ -c main.cpp
还有一行将所有文件链接在一起(我没有添加它,因为我是在我的 Mac 上编写它并从我的 Raspberry Pi 的屏幕上复制它)。
我的问题是,当我尝试编译它们时,它们都可以工作,除了 main,它告诉我以下内容:
In file included from main.cpp:6:0:
view.h:4:23: fatal error: VG/openvg.h: No such file or directory
compilation terminated.
make: *** [main] Error 1
据我了解,当我用“make view”编译视图时,它可以毫无问题地找到包含的文件,因为它具有它必须查找的路径,但是由于“make main”没有这些路径,它不知道去哪里找openvg.h。问题是,如果我将路径添加到 main,它会告诉我库中有多个定义......有什么帮助吗?