包括3.2.6到4.5.1更新后的文件问题

Xcode #Include file problems after update from 3.2.6 to 4.5.1

本文关键字:更新 文件 问题 包括      更新时间:2023-10-16

自从从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中明确指定头文件的完整路径,但这破坏了项目构建的其余部分的包含。

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

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

奇怪的是,如果我注释出#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++代码