Xcode 4 C++头文件,包含另一个头文件的相对路径

kpbpu008  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(274)

我使用的是一个包含结构的库,其中.h文件都在一个目录中。这些.h文件包含一行#include指令,它指向特定源文件夹位置中的“real”头文件。这些文件中的#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,但它无法在这些头文件中沿着相对包含路径找到'/platformA/something'目录中的'真实的' foo1.h,依此类推。
我怀疑这是因为顶层foo1.h文件中的include路径是相对于其位置的,但Xcode可能将其视为相对于其他位置(项目根目录或其他位置)?FWIW,Visual Studio在相同的配置下没有问题。
我能做些什么来补救呢?

5tmbdcev

5tmbdcev1#

从您的目录结构来看,目录platformAplatformB似乎位于include文件夹之外。对此有两种可能的解决方案:
溶液A
将这些文件移至include文件夹。
溶液B
project/platformAproject/platformB添加到项目设置中的directories where include files should be looked for

eanckbw9

eanckbw92#

不要使用相对路径。说真的,它们的工作方式是由实现定义的行为,因此不同的编译器/环境/平台会有不同的行为,在你的例子中,Xcode几乎肯定是在某种“build”目录中调用GCC或clang,这个目录可能是也可能不是你的源代码目录的兄弟目录。
不值得你这么头疼。
platformAplatformB放在include中,或者添加另一个目录(比如platform-include)将它们放在那里,然后将该目录添加到包含路径中。

相关问题