我使用的是一个包含结构的库,其中.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在相同的配置下没有问题。
我能做些什么来补救呢?
2条答案
按热度按时间5tmbdcev1#
从您的目录结构来看,目录
platformA
和platformB
似乎位于include文件夹之外。对此有两种可能的解决方案:溶液A
将这些文件移至
include
文件夹。溶液B
将
project/platformA
和project/platformB
添加到项目设置中的directories where include files should be looked for
。eanckbw92#
不要使用相对路径。说真的,它们的工作方式是由实现定义的行为,因此不同的编译器/环境/平台会有不同的行为,在你的例子中,Xcode几乎肯定是在某种“build”目录中调用GCC或clang,这个目录可能是也可能不是你的源代码目录的兄弟目录。
不值得你这么头疼。
将
platformA
和platformB
放在include
中,或者添加另一个目录(比如platform-include
)将它们放在那里,然后将该目录添加到包含路径中。