Xcode 4 C++头文件,具有到另一个头的相对路径

Xcode 4 C++ header file with relative path to another header

本文关键字:另一个 相对 路径 C++ 文件 Xcode      更新时间:2023-10-16

我使用的是一个包含结构的库,其中.h文件都在一个目录中。这些.h文件包含一行#include指令,该指令指向特定源文件夹位置中的"真实"头文件。这些文件中的#include路径是相对的。

这里有一个例子。目录结构为:

/project
     /sources 
         <my .cpp files>
         <my .cpp files>
         ...
     /include
         /component
             foo1.h
             foo2.h
     /platformA/something/foo1.h
     /platformB/somethingelse/foo2.h

/include/component/foo1.h包含一行代码:#include "../platformA/something/foo1.h"

/include/component/foo2.h包含单行代码#include "../platformB/somethingelse/foo2.h"

在我的资料来源中,我只是:#include "component/foo1.h"

我的项目的标题搜索路径指向/include

现在,Xcode 4能够在/include中找到component/foo1.h,但它无法遵循这些标头中的相对include路径,也无法在"/platformA/something"目录中找到"real"foo1.h,依此类推

我怀疑这是因为顶级foo1.h文件中的include路径与其位置相关,但Xcode可能会将其视为与其他位置(项目根或其他位置)相关?FWIW,Visual Studio使用相同的配置没有问题。

我该怎么办?

从目录结构来看,目录platformAplatformB似乎位于include文件夹之外。有两种可能的解决方案:

解决方案A

移动这些到CCD_ 11文件夹。

解决方案B

添加project/platformAproject/platformBdirectories where include files should be looked for在项目中设置。

不要使用相对路径。说真的,它们的工作方式是由实现定义的行为,因此不同的编译器/环境/平台会有不同的行为,在您的情况下,Xcode几乎可以肯定是在某种"构建"目录中调用GCC或clang,这可能是也可能不是源目录的兄弟目录。

这不值得头疼。

platformAplatformB放在include中,或者添加另一个目录(比如platform-include)将它们放在其中,然后将该目录添加到包含路径中。

相关文章: