包括来自不同应用程序/目录的.h文件

ran*_*ght 4 c++ linux include

我有一些.h文件如下(在Linux上)

Source/Server/connect.h
Source/Server/message.h
...
Run Code Online (Sandbox Code Playgroud)

我正在开发另一个需要两个.h文件但位于不同目录中的应用程序

Source/App2/..
Run Code Online (Sandbox Code Playgroud)

如何在app2应用程序中包含connect.h文件,考虑到我使用perforce并且其他所有在应用程序上工作的人都有自己的副本,所以添加一个绝对路径到包含库可能不是一个好主意但我不确定.

编辑:我使用专有的构建机制来构建代码,因此无法直接指定gcc选项.

Jam*_*lis 16

您可以#include指向文件的相对路径:

#include "../Server/connect.h"
Run Code Online (Sandbox Code Playgroud)

或者你可以添加一个标志来告诉编译器查看另一个目录.对于gcc你可以使用-I../Server; 对于Visual C++,您可以使用/I"../Server"; 其他编译器,我敢肯定,为此目的有自己的标志.

我认为第二种情况在大多数情况下更好,因为它允许您移动项目,而只需要在一个地方修改包含路径(makefile或属性表).