5

我已经使用Clint Harris 的教程来设置项目之间的代码共享,并且在我的计算机上一切正常。但是在我同事的机器上,编译器在构建时似乎没有从静态库项目中找到头文件。

我的同事通过克隆 git 存储库获得了我的项目。我们已经检查了所有相关的构建标志和 XCode 设置 n 次,但该项目只是拒绝在他的机器上编译。

这是我要求我的同事做的,主要是从教程中复制和粘贴的:

  1. 确保项目目录的完整路径中没有空格。
  2. 在项目目录中,创建另一个名为“build_output”的文件夹。
  3. 在 XCode 中,在“XCode > Preferences”下选择“Building”选项卡并将“Place Build Projects in”设置为“Customized location”并指定您创建的公共构建目录的路径。
  4. 将“将中间构建文件放入”设置为“使用构建产品”。</li>
  5. 选择“Source Trees”选项卡并通过单击“+”按钮并填写列来创建一个新的 Source Tree 变量。在“设置名称”和“显示名称”中,输入[创建静态库的共享项目的名称]。在路径中,您将完整路径放入框架文件夹。

按照这些步骤,使用静态库的项目应该在他的机器上和我的机器上编译一样。但事实并非如此。基本上,他得到的错误是:

error: TheFrameworkHeader.h: No such file or directory

然后是由于缺少标头而导致的一串其他错误。

任何解决此问题的策略?或者任何有类似经历并且可以分享一些来之不易的知识的人?我总结的说明中是否缺少任何内容?编译静态库时是否需要在 Copy Headers 构建阶段设置 headers 的角色?

4

5 回答 5

8

尽管有一些有用的建议,但我从未想过这个问题,但这里有一些信息给处于类似情况的任何人。我通过将原始项目一分为二来创建库和依赖项目。起初,库和应用程序只是同一个项目中的两个目标。后来,我将应用程序移到了一个单独的项目中。一切似乎都正常,我将两个项目都推送到了远程 git 存储库。但是,当这些被克隆到其他计算机上时,找不到库标题。

后来发现在原机克隆项目时也出现了同样的错误。经过一番挣扎,我把它归结为一个可怕的细节:依赖项目文件夹的名称!(即带有应用程序的项目,而不是库。)不是 .xcodeproject 包的名称,不是应用程序标识符,而是包含文件夹的名称。一旦我改变它,一切都会起作用。如果我将其更改回原始名称(在任何计算机上),则再次找不到标题。

如果有人对此有任何见解,请发布答案!

编辑:自从我发布了这个,另一个项目也出现了同样的问题,同样,仅仅重命名包含 .xcodeproject 文件夹的文件夹就解决了这个问题。

于 2009-07-17T12:14:33.917 回答
2

我不认为它是 Git,我认为它是 xcode。我在这里遇到了一个非常相似的问题,其中 xcode / xcodebuild 错误地解析了一个包含路径(使其变得简单。)使用完全相同的库项目和 xcconfig 文件(从 svn repo 清理结帐)但另一个包含文件夹 - 它可以工作。所以,thanx 的解决方案,不要再责怪 Git 了 ;-)

于 2010-02-23T15:13:39.723 回答
0

如果您在特定机器上构建时遇到问题,那么问题可能出在机器或用户设置上。比如一个环境变量(可能是 INCLUDE_PATH 或者它的一个亲戚——XCode 使用 GCC)。你可能有一个“。” 在这些变量之一。

解决此问题的最佳方法是将所需的文件夹路径添加到构建脚本中的 -I 开关。

于 2009-07-09T20:08:52.903 回答
0

我经常忘记检查这一点:你确定丢失的文件(即 TheFrameWorkHeader.h”在 git 存储库中吗?很可能是你的构建设置是正确的,但文件不知何故没有正确添加到 git。

于 2009-07-09T20:17:48.953 回答
0

仔细检查“Search Paths->User Header Search Paths”构建设置(对于所有配置)是否指向包含共享 Xcode 项目的目录(您可以使用您创建的新 Source Tree 变量)。

于 2009-07-17T00:05:42.117 回答