为什么找不到静态库头?

时间:2009-07-07 23:55:12

标签: iphone xcode gcc static-libraries xcodebuild

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

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

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

  1. 确保项目目录的完整路径中没有空格。
  2. 在项目目录中,创建另一个名为“build_output”的文件夹。
  3. 在XCode中,在“XCode>下;首选项“选择”构建“选项卡并将”将构建项目放置“到”自定义位置“,并指定您创建的公共构建目录的路径。
  4. 将“放置中间构建文件”设置为“使用构建产品。”
  5. 选择“源树”选项卡,然后通过单击“+”按钮并填写列来创建新的源树变量。在“设置名称”和“显示名称”中,放置 [创建静态库的共享项目的名称]。在路径中,您将完整路径放在框架文件夹中。
  6. 遵循这些步骤,使用静态库的项目应该在他的机器上编译与我的相同。但事实并非如此。基本上,他得到的错误是:

    error: TheFrameworkHeader.h: No such file or directory
    

    然后是由缺少的标题引起的一系列其他错误。

    任何解决问题的策略?或者任何有类似经历并且可以分享一些来之不易的知识的人?我总结的说明中是否有任何遗漏?在编译静态库时,是否需要在“复制标题”构建阶段设置标题的角色?

5 个答案:

答案 0 :(得分:8)

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

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

如果有人对此有任何见解,请发表回答!

编辑:由于我发布了这个问题,同样的问题出现在另一个项目中,而且只是重命名包含.xcodeproject文件夹的文件夹修复了问题。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

如果您在特定计算机上构建时遇到问题,则问题可能出在机器或用户设置上。例如environment variable(可能是INCLUDE_PATH或其中一个亲戚 - XCode使用GCC)。你可能有一个“。”在其中一个变量中。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

仔细检查“搜索路径 - >用户标题搜索路径”构建设置(对于所有配置)是否指向包含共享Xcode项目的目录(您可以使用您创建的新源树变量)。