在我的Xcode项目中,我添加了一个新的单元测试目标(使用谷歌C ++ _测试框架)。我创建了一个新目录(例如/ unittest / myproject /),其中我复制了源(.h / .cpp)文件,并进行了一些修改(例如,将受保护的方法设置为public)以用于测试目的并添加到单元测试目标。
但是当我包含.h文件main.cpp时,它指的是原始文件而不是文件,它位于/ unittest / myproject /中。此外,我已将标题搜索路径设置为" $(SRCROOT)/../../ unittest / myproject"但仍然main.cpp指的是原始文件(Command + click转到原始文件)。任何人都可以建议我缺少什么? Xcode版本4.6.3
答案 0 :(得分:0)
有问题的标题肯定存在于另一个目录中,XCode将其视为包含路径。
这样的目录可以是,例如:
/usr/include
/usr/local/include
和其他人,具体取决于您的环境设置。
我建议您搜索具有此类名称的所有文件,并查看系统将返回的目录。
然后,您应该删除此文件[s](如果它不再使用)或从XCode中设置的包含路径中删除其父目录。这应该有所帮助。
还有一件事:
您还应该检查您对此文件使用的包含类型:
#include "header.h"
#include <header.h>
它依赖于编译器,但通常是引号样式优先化标头,它们与包含#include
语句的文件存在于同一目录中。
来自规范:
表单
的预处理指令
# include <h-char-sequence> new-line
在一系列实现定义的地方搜索标题 通过&lt;之间的指定序列唯一地识别。和&gt; 分隔符,并导致整个指令的替换 标题的内容。 如何指定地点或标题 确定是实施定义的。
表单
的预处理指令
# include "q-char-sequence" new-line
导致该指令的全部内容被替换 源文件由&#34;之间的指定序列标识。 分隔符。搜索指定的源文件中的 实现定义的方式。如果不支持此搜索,或 如果搜索失败,则重新处理该指令,就像它读取
一样
# include <h-char-sequence> new-line
包含相同的序列(包括&gt;字符,如果有的话) 来自原始指令。