我正在使用一个包含结构的库,其中.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在相同配置方面没有任何问题。
我可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
从您的目录结构中,似乎目录platformA
和platformB
位于include文件夹之外。有两种可能的解决方案:
解决方案A
移动这些 到
include
文件夹。
解决方案B
添加
project/platformA
和project/platformB
到 项目中directories where include files should be looked for
设置。
答案 1 :(得分:0)
不要使用相对路径。说真的,它是实现定义的行为,它们是如何工作的,因此不同的编译器/环境/平台的行为会有所不同,在你的情况下,Xcode几乎肯定会在某种“构建”目录中调用GCC或clang,这可能是也可能不是你的来源目录的兄弟姐妹。
这不值得头痛。
将platformA
和platformB
放入include
,或添加另一个目录(例如platform-include
)并将其放入其中,然后将该目录添加到包含路径中。< / p>