0

自从将 C++ 项目从 Xcode 3.2.6 升级到 Xcode 4.5.1 以来,我遇到了最奇怪的 #include 文件问题:无法找到我的一个静态链接库的 #include 头文件。对于整个项目,我没有其他未定义的符号错误。

#include 位于前缀标头“MacClient_Prefix.pch”中(我不是预编译标头):

#include "Framework/Base/BaseEnvironment.h"

此头文件 (BaseEnvironment.h) 位于与静态链接库相关的完全不同的文件夹层次结构中。

错误:

/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/WordMenuBaseEnv.h
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/WordMenuBaseEnv.h:26:10: 'Framework/Base/BaseEnvironment.h' file not found
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/<built-in>:148:2: In file included from <built-in>:148:
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/<command line>:4:10: In file included from <command line>:4:
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/MacClient_Prefix.pch:9:10: In file included from
     /Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/MacClient_Prefix.pch:9:

我相当确定为项目正确设置了用户头文件路径。

奇怪的是,如果我注释掉#include,那么我会从其余代码中得到数百个缺少符号的实际错误。很明显,当前缀头用于编译项目文件时,文件被找到。

我什至尝试在#include 中明确指定头文件的完整路径,但这破坏了项目构建其余部分的包含。

我在构建选项中的包含路径是项目相关的,我认为这可能与这个问题有关。该问题是否与派生数据或中间体的包含路径有关?

静态链接库的构建项目(包含在有错误的“主”项目中)确实将头文件定义为“公共”。但是,主项目的干净构建/重建(目前)似乎不会重新构建静态链接库。

4

1 回答 1

1

奇怪的是,如果我注释掉#include,那么我会从其余代码中得到数百个缺少符号的实际错误。很明显,当前缀头用于编译项目文件时,文件被找到。

#include 错误是致命的,因此编译器将不会继续显示因缺少#include 而导致的所有错误。

#include <foo>
There's no way this is legal C++...

结果:

main.cpp:1:10: fatal error: 'foo' file not found
#include <foo>
         ^
1 error generated.

没有其他错误的事实并不意味着第二行被解释为有效的 C++ 代码。

于 2013-03-27T18:38:30.483 回答