【发布时间】:2015-10-07 14:53:27
【问题描述】:
我有一个关于如何修复以下 Linux Makefile 代码的问题:
g++ -g -Wall -I"./" -I"../CameraControlLib" -I"./Cameras" -I"../../Utilities/DataServer" -o Server.o CameraControlLib/Server.cpp
在这种特殊情况下,DataServerLib.h 包括CameraControlDefs.h,如下所示。 Ubuntu Linux g++ 编译器正确使用 -I 预处理器指令解析包含文件 DataServerLib.h,如下所示。
但是,g++ 编译器告诉我没有像CameraControlDefs.h 这样的文件或目录,即使我将-I 子目录路径指向../../Utilities/DataServer。
In file included from CameraControlLib/DataServer.h:4:0,
from CameraControlLib/DataServer.cpp:8:
CameraControlLib/DataServerLib.h:9:31: fatal error: CameraControlDefs.h: No such file or directory
#include "CameraControlDefs.h"
^
compilation terminated.
我知道如果我使用#include "SomeDir/CameraControlDefs.h",那应该会消除编译器错误消息。如果有使用 Linux g++ 选项的全部范围的替代方法,请告诉我。
【问题讨论】:
-
您是否确认按照您在上一段中的建议更改源文件确实可以消除错误?测试将确保您正确理解问题。
-
CameraControlDefs.h到底住在哪里? -
您是否阅读过GCC 的文档,尤其是关于Invoking GCC 的章节?还有
cpppreprocessor....的文档?您真的应该阅读它们(这不会浪费时间)。 -
然后,您应该使用
-H来了解在预处理阶段发生了什么;注意-I想要 directories -
避免在
#include指令中使用绝对文件路径:#include "/home/frank/includedir/foo.h"总是是一个错误