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

时间:2011-06-10 07:29:57

标签: c++ xcode macos xcode4

我正在使用一个包含结构的库,其中.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能够在component/foo1.h中找到/include,但它无法跟踪这些标题中的相对包含路径,并在`/ platformA /中找到'真正的'foo1.h某个'目录,等等。

我怀疑是因为顶级foo1.h文件中的包含路径与其位置有关,但XCode可能将其视为相对于某个其他位置(项目根目录或其他内容)? FWIW,Visual Studio在相同配置方面没有任何问题。

我可以采取哪些措施来解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

解决方案A

  

移动这些   到include文件夹。

解决方案B

  

添加project/platformA和   project/platformB到   项目中directories where include files should be looked for   设置。

答案 1 :(得分:0)

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

这不值得头痛。

platformAplatformB放入include,或添加另一个目录(例如platform-include)并将其放入其中,然后将该目录添加到包含路径中。< / p>