Xcode 4 C++头文件,具有到另一个头的相对路径
Xcode 4 C++ header file with relative path to another header
我使用的是一个包含结构的库,其中.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使用相同的配置没有问题。
我该怎么办?
从目录结构来看,目录platformA
和platformB
似乎位于include文件夹之外。有两种可能的解决方案:
解决方案A
移动这些到CCD_ 11文件夹。
解决方案B
添加
project/platformA
和project/platformB
到directories where include files should be looked for
在项目中设置。
不要使用相对路径。说真的,它们的工作方式是由实现定义的行为,因此不同的编译器/环境/平台会有不同的行为,在您的情况下,Xcode几乎可以肯定是在某种"构建"目录中调用GCC或clang,这可能是也可能不是源目录的兄弟目录。
这不值得头疼。
将platformA
和platformB
放在include
中,或者添加另一个目录(比如platform-include
)将它们放在其中,然后将该目录添加到包含路径中。
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 从另一个应用启动我的应用时出现相对路径更改问题
- 相对于另一个向量对一个向量进行排序 - 最有效的方法
- 如何对一个向量相对于另一个向量进行排序
- 在另一个类内部构造一个类(非静态成员引用必须相对于特定对象)